CLASS {{p}}t30_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. TYPES ty_fee TYPE p LENGTH 8 DECIMALS 2. DATA mo_cut TYPE REF TO {{p}}studio_summary. METHODS setup. METHODS empty_input FOR TESTING. METHODS single_entry FOR TESTING. METHODS two_studios_same_type FOR TESTING. METHODS ignores_zero_fee FOR TESTING. METHODS ignores_negative_fee FOR TESTING. METHODS ignores_empty_type FOR TESTING. METHODS removes_duplicates FOR TESTING. METHODS same_member_two_types FOR TESTING. METHODS same_class_two_studios FOR TESTING. METHODS sorted_by_class_type FOR TESTING. ENDCLASS. CLASS {{p}}t30_hidden IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}studio_summary( ). ENDMETHOD. METHOD empty_input. DATA lt_input TYPE {{p}}studio_summary=>tt_attendance. DATA(lt_result) = mo_cut->summarize( lt_input ). cl_abap_unit_assert=>assert_initial( act = lt_result ). ENDMETHOD. METHOD single_entry. DATA lt_input TYPE {{p}}studio_summary=>tt_attendance. lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA' member_id = 'M0000001' fee = '12.50' ) ). DATA(lt_result) = mo_cut->summarize( lt_input ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ). cl_abap_unit_assert=>assert_equals( exp = 'YOGA' act = lt_result[ 1 ]-class_type ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_result[ 1 ]-class_count ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_result[ 1 ]-member_count ). cl_abap_unit_assert=>assert_equals( exp = CONV ty_fee( '12.50' ) act = lt_result[ 1 ]-total_fee ). ENDMETHOD. METHOD two_studios_same_type. DATA lt_input TYPE {{p}}studio_summary=>tt_attendance. lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA' member_id = 'M0000001' fee = '10.00' ) ( studio = 'S002' class_id = 'C0000002' class_type = 'YOGA' member_id = 'M0000002' fee = '15.00' ) ). DATA(lt_result) = mo_cut->summarize( lt_input ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_result[ 1 ]-class_count ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_result[ 1 ]-member_count ). cl_abap_unit_assert=>assert_equals( exp = CONV ty_fee( '25.00' ) act = lt_result[ 1 ]-total_fee ). ENDMETHOD. METHOD ignores_zero_fee. DATA lt_input TYPE {{p}}studio_summary=>tt_attendance. lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA' member_id = 'M0000001' fee = '0.00' ) ). DATA(lt_result) = mo_cut->summarize( lt_input ). cl_abap_unit_assert=>assert_initial( act = lt_result ). ENDMETHOD. METHOD ignores_negative_fee. DATA lt_input TYPE {{p}}studio_summary=>tt_attendance. lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA' member_id = 'M0000001' fee = '-5.00' ) ). DATA(lt_result) = mo_cut->summarize( lt_input ). cl_abap_unit_assert=>assert_initial( act = lt_result ). ENDMETHOD. METHOD ignores_empty_type. DATA lt_input TYPE {{p}}studio_summary=>tt_attendance. lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = '' member_id = 'M0000001' fee = '10.00' ) ). DATA(lt_result) = mo_cut->summarize( lt_input ). cl_abap_unit_assert=>assert_initial( act = lt_result ). ENDMETHOD. METHOD removes_duplicates. DATA lt_input TYPE {{p}}studio_summary=>tt_attendance. lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA' member_id = 'M0000001' fee = '10.00' ) ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA' member_id = 'M0000001' fee = '99.00' ) ). DATA(lt_result) = mo_cut->summarize( lt_input ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_result[ 1 ]-class_count ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_result[ 1 ]-member_count ). cl_abap_unit_assert=>assert_equals( exp = CONV ty_fee( '10.00' ) act = lt_result[ 1 ]-total_fee ). ENDMETHOD. METHOD same_member_two_types. DATA lt_input TYPE {{p}}studio_summary=>tt_attendance. lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA' member_id = 'M0000001' fee = '10.00' ) ( studio = 'S001' class_id = 'C0000002' class_type = 'PILATES' member_id = 'M0000001' fee = '12.00' ) ). DATA(lt_result) = mo_cut->summarize( lt_input ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_result ) ). cl_abap_unit_assert=>assert_equals( exp = 'PILATES' act = lt_result[ 1 ]-class_type ). cl_abap_unit_assert=>assert_equals( exp = 'YOGA' act = lt_result[ 2 ]-class_type ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_result[ 1 ]-class_count ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_result[ 1 ]-member_count ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_result[ 2 ]-class_count ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_result[ 2 ]-member_count ). cl_abap_unit_assert=>assert_equals( exp = CONV ty_fee( '12.00' ) act = lt_result[ 1 ]-total_fee ). cl_abap_unit_assert=>assert_equals( exp = CONV ty_fee( '10.00' ) act = lt_result[ 2 ]-total_fee ). ENDMETHOD. METHOD same_class_two_studios. DATA lt_input TYPE {{p}}studio_summary=>tt_attendance. lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA' member_id = 'M0000001' fee = '10.00' ) ( studio = 'S002' class_id = 'C0000001' class_type = 'YOGA' member_id = 'M0000002' fee = '10.00' ) ). DATA(lt_result) = mo_cut->summarize( lt_input ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_result[ 1 ]-class_count ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_result[ 1 ]-member_count ). ENDMETHOD. METHOD sorted_by_class_type. DATA lt_input TYPE {{p}}studio_summary=>tt_attendance. lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'ZUMBA' member_id = 'M0000001' fee = '10.00' ) ( studio = 'S001' class_id = 'C0000002' class_type = 'AEROBIC' member_id = 'M0000002' fee = '10.00' ) ). DATA(lt_result) = mo_cut->summarize( lt_input ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_result ) ). cl_abap_unit_assert=>assert_equals( exp = 'AEROBIC' act = lt_result[ 1 ]-class_type ). cl_abap_unit_assert=>assert_equals( exp = 'ZUMBA' act = lt_result[ 2 ]-class_type ). ENDMETHOD. ENDCLASS.