CLASS {{p}}t31_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}fish_auction. METHODS setup. METHODS sums_two_species FOR TESTING. METHODS counts_distinct_boats FOR TESTING. METHODS ignores_zero_weight FOR TESTING. METHODS ignores_blank_species FOR TESTING. METHODS trims_and_uppercases FOR TESTING. METHODS sorts_by_species FOR TESTING. METHODS empty_input FOR TESTING. METHODS all_entries_invalid FOR TESTING. METHODS best_species_highest FOR TESTING. METHODS best_species_tie FOR TESTING. METHODS best_species_none FOR TESTING. ENDCLASS. CLASS {{p}}t31_hidden IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}fish_auction( ). ENDMETHOD. METHOD sums_two_species. DATA lt_result TYPE STANDARD TABLE OF {{p}}fish_auction=>ty_summary WITH EMPTY KEY. lt_result = mo_cut->summarize( VALUE #( ( boat_id = 'B1' species = 'COD' weight_kg = 100 ) ( boat_id = 'B2' species = 'COD' weight_kg = 50 ) ( boat_id = 'B1' species = 'HERRING' weight_kg = 30 ) ) ). cl_abap_unit_assert=>assert_equals( act = lines( lt_result ) exp = 2 ). READ TABLE lt_result INTO DATA(ls_row) WITH KEY species = 'COD'. cl_abap_unit_assert=>assert_equals( act = ls_row-total_weight exp = 150 ). cl_abap_unit_assert=>assert_equals( act = ls_row-boat_count exp = 2 ). READ TABLE lt_result INTO ls_row WITH KEY species = 'HERRING'. cl_abap_unit_assert=>assert_equals( act = ls_row-total_weight exp = 30 ). cl_abap_unit_assert=>assert_equals( act = ls_row-boat_count exp = 1 ). ENDMETHOD. METHOD counts_distinct_boats. DATA lt_result TYPE STANDARD TABLE OF {{p}}fish_auction=>ty_summary WITH EMPTY KEY. lt_result = mo_cut->summarize( VALUE #( ( boat_id = 'B1' species = 'COD' weight_kg = 10 ) ( boat_id = 'B1' species = 'COD' weight_kg = 20 ) ( boat_id = 'B2' species = 'COD' weight_kg = 5 ) ) ). READ TABLE lt_result INTO DATA(ls_row) WITH KEY species = 'COD'. cl_abap_unit_assert=>assert_equals( act = ls_row-total_weight exp = 35 ). cl_abap_unit_assert=>assert_equals( act = ls_row-boat_count exp = 2 ). ENDMETHOD. METHOD ignores_zero_weight. DATA lt_result TYPE STANDARD TABLE OF {{p}}fish_auction=>ty_summary WITH EMPTY KEY. lt_result = mo_cut->summarize( VALUE #( ( boat_id = 'B1' species = 'COD' weight_kg = 0 ) ( boat_id = 'B2' species = 'COD' weight_kg = -5 ) ( boat_id = 'B3' species = 'COD' weight_kg = 7 ) ) ). cl_abap_unit_assert=>assert_equals( act = lines( lt_result ) exp = 1 ). READ TABLE lt_result INTO DATA(ls_row) WITH KEY species = 'COD'. cl_abap_unit_assert=>assert_equals( act = ls_row-total_weight exp = 7 ). cl_abap_unit_assert=>assert_equals( act = ls_row-boat_count exp = 1 ). ENDMETHOD. METHOD ignores_blank_species. DATA lt_result TYPE STANDARD TABLE OF {{p}}fish_auction=>ty_summary WITH EMPTY KEY. lt_result = mo_cut->summarize( VALUE #( ( boat_id = 'B1' species = '' weight_kg = 10 ) ( boat_id = 'B2' species = ' ' weight_kg = 20 ) ( boat_id = 'B3' species = 'COD' weight_kg = 5 ) ) ). cl_abap_unit_assert=>assert_equals( act = lines( lt_result ) exp = 1 ). READ TABLE lt_result INTO DATA(ls_row) WITH KEY species = 'COD'. cl_abap_unit_assert=>assert_equals( act = ls_row-total_weight exp = 5 ). ENDMETHOD. METHOD trims_and_uppercases. DATA lt_result TYPE STANDARD TABLE OF {{p}}fish_auction=>ty_summary WITH EMPTY KEY. lt_result = mo_cut->summarize( VALUE #( ( boat_id = 'B1' species = ' cod ' weight_kg = 10 ) ( boat_id = 'B2' species = 'COD' weight_kg = 20 ) ) ). cl_abap_unit_assert=>assert_equals( act = lines( lt_result ) exp = 1 ). READ TABLE lt_result INTO DATA(ls_row) WITH KEY species = 'COD'. cl_abap_unit_assert=>assert_equals( act = ls_row-total_weight exp = 30 ). cl_abap_unit_assert=>assert_equals( act = ls_row-boat_count exp = 2 ). ENDMETHOD. METHOD sorts_by_species. DATA lt_result TYPE STANDARD TABLE OF {{p}}fish_auction=>ty_summary WITH EMPTY KEY. lt_result = mo_cut->summarize( VALUE #( ( boat_id = 'B1' species = 'TUNA' weight_kg = 10 ) ( boat_id = 'B2' species = 'COD' weight_kg = 20 ) ( boat_id = 'B3' species = 'MACKEREL' weight_kg = 5 ) ) ). cl_abap_unit_assert=>assert_equals( act = lines( lt_result ) exp = 3 ). READ TABLE lt_result INTO DATA(ls_row) INDEX 1. cl_abap_unit_assert=>assert_equals( act = ls_row-species exp = 'COD' ). READ TABLE lt_result INTO ls_row INDEX 3. cl_abap_unit_assert=>assert_equals( act = ls_row-species exp = 'TUNA' ). ENDMETHOD. METHOD empty_input. DATA lt_result TYPE STANDARD TABLE OF {{p}}fish_auction=>ty_summary WITH EMPTY KEY. lt_result = mo_cut->summarize( VALUE #( ) ). cl_abap_unit_assert=>assert_equals( act = lines( lt_result ) exp = 0 ). ENDMETHOD. METHOD all_entries_invalid. DATA lt_result TYPE STANDARD TABLE OF {{p}}fish_auction=>ty_summary WITH EMPTY KEY. lt_result = mo_cut->summarize( VALUE #( ( boat_id = 'B1' species = ' ' weight_kg = 10 ) ( boat_id = 'B2' species = 'COD' weight_kg = 0 ) ) ). cl_abap_unit_assert=>assert_equals( act = lines( lt_result ) exp = 0 ). ENDMETHOD. METHOD best_species_highest. cl_abap_unit_assert=>assert_equals( act = mo_cut->best_species( VALUE #( ( boat_id = 'B1' species = 'COD' weight_kg = 10 ) ( boat_id = 'B2' species = 'TUNA' weight_kg = 40 ) ( boat_id = 'B3' species = 'HERRING' weight_kg = 25 ) ) ) exp = 'TUNA' ). ENDMETHOD. METHOD best_species_tie. cl_abap_unit_assert=>assert_equals( act = mo_cut->best_species( VALUE #( ( boat_id = 'B1' species = 'TUNA' weight_kg = 30 ) ( boat_id = 'B2' species = 'COD' weight_kg = 30 ) ) ) exp = 'COD' ). ENDMETHOD. METHOD best_species_none. cl_abap_unit_assert=>assert_initial( mo_cut->best_species( VALUE #( ) ) ). ENDMETHOD. ENDCLASS.