Files
abap/exercises/practice/phone-number/zcl_phone_number.clas.testclasses.abap
Marc Bernard bb6b3d0480 Make repository compatible with abapGit (#82)
* Create .abapgit.xml

* Create package.devc.xml

* Create package.devc.xml

* Create zcl_anagram.clas.xml

* Update .abapgit.xml

* Add packages

* Add classes

* Update packages

* Update abapGit.xml

* Update XML objects

* Fix EOF

* Update EE

* Update EOF

* Change starting folder

* Add execises

* Update .abapgit.xml

* Package description

* Update xml

* Update EOF

Co-authored-by: Marc Bernard <marc@mail.marcbernardtools.com>
2022-05-24 10:03:57 +02:00

188 lines
5.4 KiB
ABAP

CLASS ltcl_phone_number DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
PRIVATE SECTION.
DATA cut TYPE REF TO zcl_phone_number.
METHODS setup.
METHODS test_clean_number FOR TESTING RAISING cx_static_check.
METHODS test_clean_number_dots FOR TESTING RAISING cx_static_check.
METHODS test_clean_number_spaces FOR TESTING RAISING cx_static_check.
METHODS test_fail_nine_digits FOR TESTING RAISING cx_static_check.
METHODS test_fail_11_digits_not_1 FOR TESTING RAISING cx_static_check.
METHODS test_valid_11_digits_1 FOR TESTING RAISING cx_static_check.
METHODS test_valid_11_digits_punct FOR TESTING RAISING cx_static_check.
METHODS test_fail_more_11_digits FOR TESTING RAISING cx_static_check.
METHODS test_fail_letters FOR TESTING RAISING cx_static_check.
METHODS test_fail_punctuations FOR TESTING RAISING cx_static_check.
METHODS test_fail_areacode_0 FOR TESTING RAISING cx_static_check.
METHODS test_fail_areacode_1 FOR TESTING RAISING cx_static_check.
METHODS test_fail_exchangecode_0 FOR TESTING RAISING cx_static_check.
METHODS test_fail_exchangecode_1 FOR TESTING RAISING cx_static_check.
METHODS test_fail_areacode_0_11 FOR TESTING RAISING cx_static_check.
METHODS test_fail_areacode_1_11 FOR TESTING RAISING cx_static_check.
METHODS test_fail_exchangecode_0_11 FOR TESTING RAISING cx_static_check.
METHODS test_fail_exchangecode_1_11 FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_phone_number IMPLEMENTATION.
METHOD setup.
cut = NEW zcl_phone_number( ).
ENDMETHOD.
" cleans the number
METHOD test_clean_number.
cl_abap_unit_assert=>assert_equals(
act = cut->clean( '(223) 456-7890' )
exp = '2234567890' ).
ENDMETHOD.
"cleans numbers with dots
METHOD test_clean_number_dots.
cl_abap_unit_assert=>assert_equals(
act = cut->clean( '223.456.7890' )
exp = '2234567890' ).
ENDMETHOD.
"cleans numbers with multiple spaces
METHOD test_clean_number_spaces.
cl_abap_unit_assert=>assert_equals(
act = cut->clean( '223 456 7890 ' )
exp = '2234567890' ).
ENDMETHOD.
"invalid when 9 digits
METHOD test_fail_nine_digits.
TRY.
cut->clean( '123456789' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"invalid when 11 digits does not start with a 1
METHOD test_fail_11_digits_not_1.
TRY.
cut->clean( '22234567890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"valid when 11 digits and starting with 1
METHOD test_valid_11_digits_1.
cl_abap_unit_assert=>assert_equals(
act = cut->clean( '12234567890' )
exp = '2234567890' ).
ENDMETHOD.
"valid when 11 digits and starting with 1 even with punctuation
METHOD test_valid_11_digits_punct.
cl_abap_unit_assert=>assert_equals(
act = cut->clean( '+1 (223) 456-7890' )
exp = '2234567890' ).
ENDMETHOD.
"invalid when more than 11 digits
METHOD test_fail_more_11_digits.
TRY.
cut->clean( '321234567890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"invalid with letters
METHOD test_fail_letters.
TRY.
cut->clean( '123-abc-7890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"invalid with punctuations
METHOD test_fail_punctuations.
TRY.
cut->clean( '123-@:!-7890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"invalid if area code starts with 0
METHOD test_fail_areacode_0.
TRY.
cut->clean( '(023) 456-7890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"invalid if area code starts with 1
METHOD test_fail_areacode_1.
TRY.
cut->clean( '(123) 456-7890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"invalid if exchange code starts with 0
METHOD test_fail_exchangecode_0.
TRY.
cut->clean( '(223) 056-7890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"invalid if exchange code starts with 1
METHOD test_fail_exchangecode_1.
TRY.
cut->clean( '(223) 156-7890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"invalid if area code starts with 0 on valid 11-digit number
METHOD test_fail_areacode_0_11.
TRY.
cut->clean( '1 (023) 456-7890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"invalid if area code starts with 1 on valid 11-digit number
METHOD test_fail_areacode_1_11.
TRY.
cut->clean( '1 (123) 456-7890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"invalid if exchange code starts with 0 on valid 11-digit number
METHOD test_fail_exchangecode_0_11.
TRY.
cut->clean( '1 (223) 056-7890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"invalid if exchange code starts with 1 on valid 11-digit number
METHOD test_fail_exchangecode_1_11.
TRY.
cut->clean( '1 (223) 156-7890' ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
ENDCLASS.