CLASS {{p}}crane_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_for IMPORTING iv_type TYPE string iv_hours TYPE decfloat34 iv_km TYPE i iv_weekend TYPE abap_bool iv_customer TYPE string RETURNING VALUE(rv_total) TYPE decfloat34. METHODS small_crane FOR TESTING. METHODS weekend_and_gold FOR TESTING. METHODS travel_cap FOR TESTING. METHODS invalid_input FOR TESTING. ENDCLASS. CLASS {{p}}crane_test IMPLEMENTATION. METHOD fee_for. CALL FUNCTION '{{P}}CRANE_FEE_OLD' EXPORTING iv_crane_type = iv_type iv_hours = iv_hours iv_distance_km = iv_km iv_weekend = iv_weekend iv_customer = iv_customer IMPORTING ev_total = rv_total EXCEPTIONS invalid_crane_type = 1 invalid_hours = 2 OTHERS = 3. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD small_crane. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 230 ) act = fee_for( iv_type = 'SM' iv_hours = 2 iv_km = 0 iv_weekend = abap_false iv_customer = 'STD' ) ). ENDMETHOD. METHOD weekend_and_gold. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '655.88' ) act = fee_for( iv_type = 'MD' iv_hours = 3 iv_km = 20 iv_weekend = abap_true iv_customer = 'GOLD' ) ). ENDMETHOD. METHOD travel_cap. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 240 ) act = fee_for( iv_type = 'SM' iv_hours = 1 iv_km = 200 iv_weekend = abap_false iv_customer = 'STD' ) ). ENDMETHOD. METHOD invalid_input. DATA lv_total TYPE decfloat34. CALL FUNCTION '{{P}}CRANE_FEE_OLD' EXPORTING iv_crane_type = 'XX' iv_hours = 1 iv_distance_km = 0 iv_weekend = abap_false iv_customer = 'STD' IMPORTING ev_total = lv_total EXCEPTIONS invalid_crane_type = 1 invalid_hours = 2 OTHERS = 3. cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ). ENDMETHOD. ENDCLASS.