CLASS {{p}}kart_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_for IMPORTING iv_laps TYPE i iv_age TYPE i iv_member TYPE abap_bool RETURNING VALUE(rv_fee) TYPE decfloat34. METHODS invalid_laps FOR TESTING. METHODS adult_base_fee FOR TESTING. METHODS member_discount FOR TESTING. METHODS minimum_fee FOR TESTING. METHODS junior_fee FOR TESTING. ENDCLASS. CLASS {{p}}kart_test IMPLEMENTATION. METHOD fee_for. DATA lv_discount TYPE abap_bool. CALL FUNCTION '{{P}}KART_FEE' EXPORTING iv_laps = iv_laps iv_driver_age = iv_age iv_member = iv_member IMPORTING ev_discount = lv_discount CHANGING cv_fee = rv_fee EXCEPTIONS invalid_laps = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD invalid_laps. DATA lv_fee TYPE decfloat34. CALL FUNCTION '{{P}}KART_FEE' EXPORTING iv_laps = 0 iv_driver_age = 30 iv_member = abap_false CHANGING cv_fee = lv_fee EXCEPTIONS invalid_laps = 1 OTHERS = 2. cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ). ENDMETHOD. METHOD adult_base_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 30 ) act = fee_for( iv_laps = 20 iv_age = 30 iv_member = abap_false ) ). ENDMETHOD. METHOD member_discount. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 27 ) act = fee_for( iv_laps = 20 iv_age = 30 iv_member = abap_true ) ). ENDMETHOD. METHOD minimum_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 20 ) act = fee_for( iv_laps = 5 iv_age = 30 iv_member = abap_false ) ). ENDMETHOD. METHOD junior_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 20 ) act = fee_for( iv_laps = 10 iv_age = 15 iv_member = abap_false ) ). ENDMETHOD. ENDCLASS.