CLASS {{p}}bind_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_for IMPORTING iv_binding TYPE string iv_pages TYPE i iv_member TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_fee) TYPE decfloat34. METHODS paperback_fee FOR TESTING. METHODS hardback_minimum FOR TESTING. METHODS member_discount FOR TESTING. METHODS express_sets_rush FOR TESTING. METHODS other_type_zero FOR TESTING. METHODS invalid_pages FOR TESTING. ENDCLASS. CLASS {{p}}bind_test IMPLEMENTATION. METHOD fee_for. DATA lv_rush TYPE abap_bool. CALL FUNCTION '{{P}}BIND_FEE' EXPORTING iv_binding = iv_binding iv_pages = iv_pages iv_member = iv_member IMPORTING ev_rush = lv_rush CHANGING cv_fee = rv_fee EXCEPTIONS invalid_pages = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD paperback_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '10.00' ) act = fee_for( iv_binding = `PB` iv_pages = 200 ) ). ENDMETHOD. METHOD hardback_minimum. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '15.00' ) act = fee_for( iv_binding = `HB` iv_pages = 50 ) ). ENDMETHOD. METHOD member_discount. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '9.00' ) act = fee_for( iv_binding = `PB` iv_pages = 200 iv_member = abap_true ) ). ENDMETHOD. METHOD express_sets_rush. DATA lv_rush TYPE abap_bool. DATA lv_fee TYPE decfloat34. CALL FUNCTION '{{P}}BIND_FEE' EXPORTING iv_binding = `EX` iv_pages = 10 iv_member = abap_false IMPORTING ev_rush = lv_rush CHANGING cv_fee = lv_fee. cl_abap_unit_assert=>assert_true( lv_rush ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '2.00' ) act = lv_fee ). ENDMETHOD. METHOD other_type_zero. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = fee_for( iv_binding = `XX` iv_pages = 100 ) ). ENDMETHOD. METHOD invalid_pages. DATA lv_fee TYPE decfloat34. CALL FUNCTION '{{P}}BIND_FEE' EXPORTING iv_binding = `PB` iv_pages = 0 CHANGING cv_fee = lv_fee EXCEPTIONS invalid_pages = 1 OTHERS = 2. cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ). ENDMETHOD. ENDCLASS.