139 lines
6.7 KiB
ABAP
139 lines
6.7 KiB
ABAP
CLASS {{p}}t20_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}log_merger.
|
|
DATA mt_empty TYPE {{p}}log_merger=>tt_log.
|
|
METHODS setup.
|
|
METHODS merges_two_lists FOR TESTING.
|
|
METHODS first_wins_on_duplicate FOR TESTING.
|
|
METHODS first_wins_within_list FOR TESTING.
|
|
METHODS sorts_by_log_no FOR TESTING.
|
|
METHODS drops_short_logs FOR TESTING.
|
|
METHODS drops_thin_logs FOR TESTING.
|
|
METHODS filter_after_dedup FOR TESTING.
|
|
METHODS empty_inputs FOR TESTING.
|
|
METHODS one_empty_list FOR TESTING.
|
|
METHODS counts_by_district FOR TESTING.
|
|
METHODS counts_empty_list FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}t20_hidden IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}log_merger( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD merges_two_lists.
|
|
DATA(lt_result) = mo_cut->combine(
|
|
it_first = VALUE #( ( log_no = 'LOG0000001' district = 'A001' length_cm = 500 diameter_cm = 30 ) )
|
|
it_second = VALUE #( ( log_no = 'LOG0000002' district = 'B001' length_cm = 600 diameter_cm = 40 ) ) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_result ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'LOG0000001' act = lt_result[ 1 ]-log_no ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'A001' act = lt_result[ 1 ]-district ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 500 act = lt_result[ 1 ]-length_cm ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'LOG0000002' act = lt_result[ 2 ]-log_no ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'B001' act = lt_result[ 2 ]-district ).
|
|
ENDMETHOD.
|
|
|
|
METHOD first_wins_on_duplicate.
|
|
DATA(lt_result) = mo_cut->combine(
|
|
it_first = VALUE #( ( log_no = 'LOG0000001' district = 'A001' length_cm = 500 diameter_cm = 30 ) )
|
|
it_second = VALUE #( ( log_no = 'LOG0000001' district = 'B001' length_cm = 900 diameter_cm = 50 ) ) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'A001' act = lt_result[ 1 ]-district ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 500 act = lt_result[ 1 ]-length_cm ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 30 act = lt_result[ 1 ]-diameter_cm ).
|
|
ENDMETHOD.
|
|
|
|
METHOD first_wins_within_list.
|
|
DATA(lt_result) = mo_cut->combine(
|
|
it_first = VALUE #( ( log_no = 'LOG0000001' district = 'A001' length_cm = 500 diameter_cm = 30 )
|
|
( log_no = 'LOG0000001' district = 'A002' length_cm = 700 diameter_cm = 40 ) )
|
|
it_second = mt_empty ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'A001' act = lt_result[ 1 ]-district ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 500 act = lt_result[ 1 ]-length_cm ).
|
|
ENDMETHOD.
|
|
|
|
METHOD sorts_by_log_no.
|
|
DATA(lt_result) = mo_cut->combine(
|
|
it_first = VALUE #( ( log_no = 'LOG0000003' district = 'A001' length_cm = 500 diameter_cm = 30 )
|
|
( log_no = 'LOG0000001' district = 'A001' length_cm = 500 diameter_cm = 30 ) )
|
|
it_second = VALUE #( ( log_no = 'LOG0000002' district = 'B001' length_cm = 500 diameter_cm = 30 ) ) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 3 act = lines( lt_result ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'LOG0000001' act = lt_result[ 1 ]-log_no ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'LOG0000002' act = lt_result[ 2 ]-log_no ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'LOG0000003' act = lt_result[ 3 ]-log_no ).
|
|
ENDMETHOD.
|
|
|
|
METHOD drops_short_logs.
|
|
DATA(lt_result) = mo_cut->combine(
|
|
it_first = VALUE #( ( log_no = 'LOG0000001' district = 'A001' length_cm = 199 diameter_cm = 30 )
|
|
( log_no = 'LOG0000002' district = 'A001' length_cm = 200 diameter_cm = 30 ) )
|
|
it_second = mt_empty ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'LOG0000002' act = lt_result[ 1 ]-log_no ).
|
|
ENDMETHOD.
|
|
|
|
METHOD drops_thin_logs.
|
|
DATA(lt_result) = mo_cut->combine(
|
|
it_first = VALUE #( ( log_no = 'LOG0000001' district = 'A001' length_cm = 500 diameter_cm = 19 )
|
|
( log_no = 'LOG0000002' district = 'A001' length_cm = 500 diameter_cm = 20 ) )
|
|
it_second = mt_empty ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'LOG0000002' act = lt_result[ 1 ]-log_no ).
|
|
ENDMETHOD.
|
|
|
|
METHOD filter_after_dedup.
|
|
DATA(lt_result) = mo_cut->combine(
|
|
it_first = VALUE #( ( log_no = 'LOG0000001' district = 'A001' length_cm = 100 diameter_cm = 30 ) )
|
|
it_second = VALUE #( ( log_no = 'LOG0000001' district = 'B001' length_cm = 900 diameter_cm = 50 ) ) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_result ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD empty_inputs.
|
|
DATA(lt_result) = mo_cut->combine( it_first = mt_empty it_second = mt_empty ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_result ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD one_empty_list.
|
|
DATA(lt_result) = mo_cut->combine(
|
|
it_first = mt_empty
|
|
it_second = VALUE #( ( log_no = 'LOG0000009' district = 'B001' length_cm = 800 diameter_cm = 45 ) ) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'LOG0000009' act = lt_result[ 1 ]-log_no ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'B001' act = lt_result[ 1 ]-district ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 800 act = lt_result[ 1 ]-length_cm ).
|
|
ENDMETHOD.
|
|
|
|
METHOD counts_by_district.
|
|
DATA(lt_stat) = mo_cut->count_by_district(
|
|
it_log = VALUE #( ( log_no = 'LOG0000001' district = 'A001' length_cm = 500 diameter_cm = 30 )
|
|
( log_no = 'LOG0000002' district = 'B001' length_cm = 300 diameter_cm = 25 )
|
|
( log_no = 'LOG0000003' district = 'A001' length_cm = 200 diameter_cm = 20 ) ) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_stat ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'A001' act = lt_stat[ 1 ]-district ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_stat[ 1 ]-log_qty ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 700 act = lt_stat[ 1 ]-total_length_cm ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'B001' act = lt_stat[ 2 ]-district ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_stat[ 2 ]-log_qty ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 300 act = lt_stat[ 2 ]-total_length_cm ).
|
|
ENDMETHOD.
|
|
|
|
METHOD counts_empty_list.
|
|
DATA(lt_stat) = mo_cut->count_by_district( it_log = mt_empty ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_stat ) ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|