CLASS {{p}}t37_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS call IMPORTING iv_program TYPE string iv_vehicle TYPE string iv_wax TYPE abap_bool DEFAULT abap_false iv_fleet TYPE abap_bool DEFAULT abap_false iv_price TYPE decfloat34 DEFAULT 99 EXPORTING ev_price TYPE decfloat34 ev_reject TYPE abap_bool ev_subrc TYPE sysubrc. METHODS basic_small_price FOR TESTING. METHODS plus_medium_price FOR TESTING. METHODS premium_wax_free FOR TESTING. METHODS fleet_discount_rounds FOR TESTING. METHODS fleet_rounds_up FOR TESTING. METHODS large_basic_rejected FOR TESTING. METHODS invalid_program_raises FOR TESTING. METHODS invalid_vehicle_raises FOR TESTING. METHODS reject_flag_false FOR TESTING. ENDCLASS. CLASS {{p}}t37_hidden IMPLEMENTATION. METHOD call. ev_price = iv_price. CALL FUNCTION '{{P}}WASH_FEE' EXPORTING iv_program = iv_program iv_vehicle = iv_vehicle iv_extra_wax = iv_wax iv_fleet = iv_fleet IMPORTING ev_reject = ev_reject CHANGING cv_price = ev_price EXCEPTIONS invalid_program = 1 invalid_vehicle = 2 OTHERS = 3. ev_subrc = sy-subrc. ENDMETHOD. METHOD basic_small_price. call( EXPORTING iv_program = `BASIC` iv_vehicle = `S` IMPORTING ev_price = DATA(lv_price) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '8.50' ) act = lv_price ). ENDMETHOD. METHOD plus_medium_price. call( EXPORTING iv_program = `PLUS` iv_vehicle = `M` IMPORTING ev_price = DATA(lv_price) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '15.00' ) act = lv_price ). ENDMETHOD. METHOD premium_wax_free. call( EXPORTING iv_program = `PREMIUM` iv_vehicle = `S` iv_wax = abap_true IMPORTING ev_price = DATA(lv_price) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '18.50' ) act = lv_price ). ENDMETHOD. METHOD fleet_discount_rounds. call( EXPORTING iv_program = `BASIC` iv_vehicle = `S` iv_fleet = abap_true IMPORTING ev_price = DATA(lv_price) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '7.23' ) act = lv_price ). ENDMETHOD. METHOD fleet_rounds_up. call( EXPORTING iv_program = `PREMIUM` iv_vehicle = `S` iv_wax = abap_true iv_fleet = abap_true IMPORTING ev_price = DATA(lv_price) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '15.73' ) act = lv_price ). ENDMETHOD. METHOD large_basic_rejected. call( EXPORTING iv_program = `BASIC` iv_vehicle = `L` IMPORTING ev_price = DATA(lv_price) ev_reject = DATA(lv_reject) ). cl_abap_unit_assert=>assert_equals( exp = abap_true act = lv_reject ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_price ). ENDMETHOD. METHOD invalid_program_raises. call( EXPORTING iv_program = `GOLD` iv_vehicle = `S` IMPORTING ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ). ENDMETHOD. METHOD invalid_vehicle_raises. call( EXPORTING iv_program = `BASIC` iv_vehicle = `XL` IMPORTING ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_subrc ). ENDMETHOD. METHOD reject_flag_false. call( EXPORTING iv_program = `PLUS` iv_vehicle = `M` IMPORTING ev_reject = DATA(lv_reject) ). cl_abap_unit_assert=>assert_equals( exp = abap_false act = lv_reject ). ENDMETHOD. ENDCLASS.