CLASS {{p}}pool_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}pool_fee. METHODS setup. METHODS assert_fee IMPORTING iv_expected TYPE {{p}}pool_fee=>ty_amount iv_ticket TYPE {{p}}pool_fee=>ty_ticket iv_minutes TYPE i iv_sauna TYPE abap_bool. METHODS adult_basic FOR TESTING. METHODS child_basic FOR TESTING. METHODS senior_basic FOR TESTING. METHODS family_basic FOR TESTING. METHODS unknown_ticket FOR TESTING. METHODS unknown_with_duration FOR TESTING. METHODS duration_first_block FOR TESTING. METHODS duration_two_blocks FOR TESTING. METHODS negative_minutes FOR TESTING. METHODS sauna_adult FOR TESTING. METHODS sauna_child_ignored FOR TESTING. METHODS sauna_family FOR TESTING. ENDCLASS. CLASS {{p}}pool_hidden IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}pool_fee( ). ENDMETHOD. METHOD assert_fee. DATA(lv_actual) = mo_cut->calculate_fee( iv_ticket = iv_ticket iv_minutes = iv_minutes iv_sauna = iv_sauna ). cl_abap_unit_assert=>assert_equals( exp = iv_expected act = lv_actual msg = |ticket { iv_ticket }, { iv_minutes } minutes, sauna { iv_sauna }| ). ENDMETHOD. METHOD adult_basic. assert_fee( iv_expected = '6.50' iv_ticket = 'A' iv_minutes = 45 iv_sauna = abap_false ). ENDMETHOD. METHOD child_basic. assert_fee( iv_expected = '3.50' iv_ticket = 'C' iv_minutes = 30 iv_sauna = abap_false ). ENDMETHOD. METHOD senior_basic. assert_fee( iv_expected = '4.50' iv_ticket = 'S' iv_minutes = 60 iv_sauna = abap_false ). ENDMETHOD. METHOD family_basic. assert_fee( iv_expected = '15.00' iv_ticket = 'F' iv_minutes = 20 iv_sauna = abap_false ). ENDMETHOD. METHOD unknown_ticket. assert_fee( iv_expected = '0.00' iv_ticket = 'X' iv_minutes = 45 iv_sauna = abap_false ). ENDMETHOD. METHOD unknown_with_duration. assert_fee( iv_expected = '2.00' iv_ticket = 'X' iv_minutes = 95 iv_sauna = abap_false ). ENDMETHOD. METHOD duration_first_block. assert_fee( iv_expected = '7.50' iv_ticket = 'A' iv_minutes = 61 iv_sauna = abap_false ). ENDMETHOD. METHOD duration_two_blocks. assert_fee( iv_expected = '8.50' iv_ticket = 'A' iv_minutes = 91 iv_sauna = abap_false ). ENDMETHOD. METHOD negative_minutes. assert_fee( iv_expected = '6.50' iv_ticket = 'A' iv_minutes = -5 iv_sauna = abap_false ). ENDMETHOD. METHOD sauna_adult. assert_fee( iv_expected = '11.50' iv_ticket = 'A' iv_minutes = 45 iv_sauna = abap_true ). ENDMETHOD. METHOD sauna_child_ignored. assert_fee( iv_expected = '3.50' iv_ticket = 'C' iv_minutes = 45 iv_sauna = abap_true ). ENDMETHOD. METHOD sauna_family. assert_fee( iv_expected = '23.00' iv_ticket = 'F' iv_minutes = 0 iv_sauna = abap_true ). ENDMETHOD. ENDCLASS.