CLASS {{p}}ride_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}if_ride_booking. METHODS setup. METHODS exp_amount IMPORTING iv_cents TYPE i RETURNING VALUE(rv_amount) TYPE {{p}}if_ride_booking=>ty_amount. METHODS price_dressage_basic FOR TESTING. METHODS price_jumping_medium FOR TESTING. METHODS price_western_group3 FOR TESTING. METHODS price_vaulting_group6 FOR TESTING. METHODS price_dressage_group5 FOR TESTING. METHODS name_empty_raises FOR TESTING. METHODS discipline_unknown_raises FOR TESTING. METHODS level_unknown_raises FOR TESTING. METHODS minutes_invalid_raises FOR TESTING. METHODS riders_invalid_raises FOR TESTING. METHODS jumping_level_raises FOR TESTING. METHODS vaulting_group_raises FOR TESTING. ENDCLASS. CLASS {{p}}ride_hidden IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}ride_booking( ). ENDMETHOD. METHOD exp_amount. DATA lv_amount TYPE {{p}}if_ride_booking=>ty_amount. lv_amount = iv_cents. rv_amount = lv_amount / 100. ENDMETHOD. METHOD price_dressage_basic. TRY. cl_abap_unit_assert=>assert_equals( exp = exp_amount( 2000 ) act = mo_cut->book( iv_rider_name = `Anna` iv_discipline = {{p}}if_ride_booking=>c_discipline-dressage iv_level = {{p}}if_ride_booking=>c_level-basic iv_minutes = 30 iv_riders = 1 ) ). CATCH {{p}}cx_ride_booking. cl_abap_unit_assert=>fail( 'exception not expected' ). ENDTRY. ENDMETHOD. METHOD price_jumping_medium. TRY. cl_abap_unit_assert=>assert_equals( exp = exp_amount( 5800 ) act = mo_cut->book( iv_rider_name = `Berta` iv_discipline = {{p}}if_ride_booking=>c_discipline-jumping iv_level = {{p}}if_ride_booking=>c_level-medium iv_minutes = 60 iv_riders = 2 ) ). CATCH {{p}}cx_ride_booking. cl_abap_unit_assert=>fail( 'exception not expected' ). ENDTRY. ENDMETHOD. METHOD price_western_group3. TRY. cl_abap_unit_assert=>assert_equals( exp = exp_amount( 4800 ) act = mo_cut->book( iv_rider_name = `Carl` iv_discipline = {{p}}if_ride_booking=>c_discipline-western iv_level = {{p}}if_ride_booking=>c_level-light iv_minutes = 90 iv_riders = 3 ) ). CATCH {{p}}cx_ride_booking. cl_abap_unit_assert=>fail( 'exception not expected' ). ENDTRY. ENDMETHOD. METHOD price_vaulting_group6. TRY. cl_abap_unit_assert=>assert_equals( exp = exp_amount( 5040 ) act = mo_cut->book( iv_rider_name = `Dora` iv_discipline = {{p}}if_ride_booking=>c_discipline-vaulting iv_level = {{p}}if_ride_booking=>c_level-advanced iv_minutes = 120 iv_riders = 6 ) ). CATCH {{p}}cx_ride_booking. cl_abap_unit_assert=>fail( 'exception not expected' ). ENDTRY. ENDMETHOD. METHOD price_dressage_group5. TRY. cl_abap_unit_assert=>assert_equals( exp = exp_amount( 4320 ) act = mo_cut->book( iv_rider_name = `Emil` iv_discipline = {{p}}if_ride_booking=>c_discipline-dressage iv_level = {{p}}if_ride_booking=>c_level-medium iv_minutes = 90 iv_riders = 5 ) ). CATCH {{p}}cx_ride_booking. cl_abap_unit_assert=>fail( 'exception not expected' ). ENDTRY. ENDMETHOD. METHOD name_empty_raises. TRY. mo_cut->book( iv_rider_name = `` iv_discipline = {{p}}if_ride_booking=>c_discipline-dressage iv_level = {{p}}if_ride_booking=>c_level-basic iv_minutes = 30 iv_riders = 1 ). cl_abap_unit_assert=>fail( 'exception expected' ). CATCH {{p}}cx_ride_input INTO DATA(lx_input). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_ride_booking=>c_reason-name act = lx_input->reason ). CATCH {{p}}cx_ride_limit. cl_abap_unit_assert=>fail( 'wrong exception' ). ENDTRY. ENDMETHOD. METHOD discipline_unknown_raises. TRY. mo_cut->book( iv_rider_name = `Frida` iv_discipline = 'XXXX' iv_level = {{p}}if_ride_booking=>c_level-basic iv_minutes = 30 iv_riders = 1 ). cl_abap_unit_assert=>fail( 'exception expected' ). CATCH {{p}}cx_ride_input INTO DATA(lx_input). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_ride_booking=>c_reason-discipline act = lx_input->reason ). CATCH {{p}}cx_ride_limit. cl_abap_unit_assert=>fail( 'wrong exception' ). ENDTRY. ENDMETHOD. METHOD level_unknown_raises. TRY. mo_cut->book( iv_rider_name = `Gustav` iv_discipline = {{p}}if_ride_booking=>c_discipline-dressage iv_level = 'X' iv_minutes = 30 iv_riders = 1 ). cl_abap_unit_assert=>fail( 'exception expected' ). CATCH {{p}}cx_ride_input INTO DATA(lx_input). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_ride_booking=>c_reason-level act = lx_input->reason ). CATCH {{p}}cx_ride_limit. cl_abap_unit_assert=>fail( 'wrong exception' ). ENDTRY. ENDMETHOD. METHOD minutes_invalid_raises. TRY. mo_cut->book( iv_rider_name = `Hanna` iv_discipline = {{p}}if_ride_booking=>c_discipline-dressage iv_level = {{p}}if_ride_booking=>c_level-basic iv_minutes = 45 iv_riders = 1 ). cl_abap_unit_assert=>fail( 'exception expected' ). CATCH {{p}}cx_ride_input INTO DATA(lx_input). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_ride_booking=>c_reason-minutes act = lx_input->reason ). CATCH {{p}}cx_ride_limit. cl_abap_unit_assert=>fail( 'wrong exception' ). ENDTRY. ENDMETHOD. METHOD riders_invalid_raises. TRY. mo_cut->book( iv_rider_name = `Ida` iv_discipline = {{p}}if_ride_booking=>c_discipline-dressage iv_level = {{p}}if_ride_booking=>c_level-basic iv_minutes = 30 iv_riders = 7 ). cl_abap_unit_assert=>fail( 'exception expected' ). CATCH {{p}}cx_ride_input INTO DATA(lx_input). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_ride_booking=>c_reason-riders act = lx_input->reason ). CATCH {{p}}cx_ride_limit. cl_abap_unit_assert=>fail( 'wrong exception' ). ENDTRY. ENDMETHOD. METHOD jumping_level_raises. TRY. mo_cut->book( iv_rider_name = `Jonas` iv_discipline = {{p}}if_ride_booking=>c_discipline-jumping iv_level = {{p}}if_ride_booking=>c_level-basic iv_minutes = 60 iv_riders = 2 ). cl_abap_unit_assert=>fail( 'exception expected' ). CATCH {{p}}cx_ride_input. cl_abap_unit_assert=>fail( 'wrong exception' ). CATCH {{p}}cx_ride_limit INTO DATA(lx_limit). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_ride_booking=>c_reason-show_level act = lx_limit->reason ). ENDTRY. ENDMETHOD. METHOD vaulting_group_raises. TRY. mo_cut->book( iv_rider_name = `Klara` iv_discipline = {{p}}if_ride_booking=>c_discipline-vaulting iv_level = {{p}}if_ride_booking=>c_level-basic iv_minutes = 60 iv_riders = 2 ). cl_abap_unit_assert=>fail( 'exception expected' ). CATCH {{p}}cx_ride_input. cl_abap_unit_assert=>fail( 'wrong exception' ). CATCH {{p}}cx_ride_limit INTO DATA(lx_limit). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_ride_booking=>c_reason-volt_group act = lx_limit->reason ). ENDTRY. ENDMETHOD. ENDCLASS.