121 lines
3.8 KiB
ABAP
121 lines
3.8 KiB
ABAP
CLASS {{P}}T14_TEST DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
METHODS line_for
|
|
IMPORTING iv_donor TYPE string
|
|
iv_group TYPE string
|
|
iv_units TYPE i
|
|
RETURNING VALUE(rv_line) TYPE string.
|
|
|
|
METHODS totals_for
|
|
IMPORTING iv_donations TYPE string
|
|
EXPORTING ev_totals TYPE string
|
|
ev_count TYPE i.
|
|
|
|
METHODS groups_donations FOR TESTING.
|
|
METHODS counts_donors FOR TESTING.
|
|
METHODS rejects_zero_units FOR TESTING.
|
|
METHODS empty_input FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{P}}T14_TEST IMPLEMENTATION.
|
|
|
|
METHOD line_for.
|
|
rv_line = iv_donor && ';' && iv_group && ';' && |{ iv_units }|.
|
|
ENDMETHOD.
|
|
|
|
METHOD totals_for.
|
|
DATA lv_totals TYPE string.
|
|
|
|
CALL FUNCTION '{{P}}DON_SUM'
|
|
EXPORTING
|
|
iv_donations = iv_donations
|
|
IMPORTING
|
|
ev_donor_count = ev_count
|
|
CHANGING
|
|
cv_totals = lv_totals
|
|
EXCEPTIONS
|
|
invalid_units = 1
|
|
OTHERS = 2.
|
|
|
|
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
|
|
ev_totals = lv_totals.
|
|
ENDMETHOD.
|
|
|
|
METHOD groups_donations.
|
|
DATA lv_totals TYPE string.
|
|
DATA lv_count TYPE i.
|
|
|
|
DATA(lv_input) = line_for( iv_donor = 'D1' iv_group = 'A+' iv_units = 2 )
|
|
&& cl_abap_char_utilities=>newline
|
|
&& line_for( iv_donor = 'D1' iv_group = 'a+' iv_units = 3 )
|
|
&& cl_abap_char_utilities=>newline
|
|
&& line_for( iv_donor = 'D2' iv_group = 'O-' iv_units = 1 ).
|
|
|
|
totals_for( EXPORTING iv_donations = lv_input
|
|
IMPORTING ev_totals = lv_totals
|
|
ev_count = lv_count ).
|
|
|
|
DATA(lv_expected) = line_for( iv_donor = 'D1' iv_group = 'A+' iv_units = 5 )
|
|
&& cl_abap_char_utilities=>newline
|
|
&& line_for( iv_donor = 'D2' iv_group = 'O-' iv_units = 1 ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_expected act = lv_totals ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_count ).
|
|
ENDMETHOD.
|
|
|
|
METHOD counts_donors.
|
|
DATA lv_totals TYPE string.
|
|
DATA lv_count TYPE i.
|
|
|
|
DATA(lv_input) = line_for( iv_donor = 'D1' iv_group = 'A+' iv_units = 1 )
|
|
&& cl_abap_char_utilities=>newline
|
|
&& line_for( iv_donor = 'D1' iv_group = 'O-' iv_units = 1 )
|
|
&& cl_abap_char_utilities=>newline
|
|
&& line_for( iv_donor = 'D2' iv_group = 'A+' iv_units = 1 ).
|
|
|
|
totals_for( EXPORTING iv_donations = lv_input
|
|
IMPORTING ev_totals = lv_totals
|
|
ev_count = lv_count ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_count ).
|
|
cl_abap_unit_assert=>assert_equals(
|
|
exp = 3
|
|
act = strlen( lv_totals ) - strlen( replace( val = lv_totals sub = cl_abap_char_utilities=>newline with = '' occ = 0 ) ) + 1 ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_zero_units.
|
|
DATA lv_totals TYPE string.
|
|
DATA lv_count TYPE i.
|
|
|
|
DATA(lv_input) = line_for( iv_donor = 'D1' iv_group = 'A+' iv_units = 0 ).
|
|
|
|
CALL FUNCTION '{{P}}DON_SUM'
|
|
EXPORTING
|
|
iv_donations = lv_input
|
|
IMPORTING
|
|
ev_donor_count = lv_count
|
|
CHANGING
|
|
cv_totals = lv_totals
|
|
EXCEPTIONS
|
|
invalid_units = 1
|
|
OTHERS = 2.
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ).
|
|
ENDMETHOD.
|
|
|
|
METHOD empty_input.
|
|
DATA lv_totals TYPE string.
|
|
DATA lv_count TYPE i.
|
|
|
|
totals_for( EXPORTING iv_donations = ''
|
|
IMPORTING ev_totals = lv_totals
|
|
ev_count = lv_count ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_count ).
|
|
cl_abap_unit_assert=>assert_equals( exp = '' act = lv_totals ).
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|