CLASS {{p}}t14_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS call IMPORTING iv_lot_type TYPE string iv_hammer TYPE decfloat34 iv_channel TYPE string iv_fee TYPE decfloat34 DEFAULT 7 EXPORTING ev_skip TYPE abap_bool ev_fee TYPE decfloat34 ev_subrc TYPE sysubrc. METHODS band_first FOR TESTING. METHODS band_second FOR TESTING. METHODS band_third FOR TESTING. METHODS online_reduction FOR TESTING. METHODS premium_rounding FOR TESTING. METHODS minimum_premium FOR TESTING. METHODS maximum_premium FOR TESTING. METHODS charity_skips FOR TESTING. METHODS negative_hammer FOR TESTING. METHODS skip_false_for_sale FOR TESTING. ENDCLASS. CLASS {{p}}t14_hidden IMPLEMENTATION. METHOD call. ev_fee = iv_fee. CALL FUNCTION '{{P}}AUC_PREMIUM' EXPORTING iv_lot_type = iv_lot_type iv_hammer = iv_hammer iv_channel = iv_channel IMPORTING ev_skip = ev_skip CHANGING cv_fee = ev_fee EXCEPTIONS invalid_hammer = 1 OTHERS = 2. ev_subrc = sy-subrc. ENDMETHOD. METHOD band_first. DATA lv_exp TYPE decfloat34. DATA lv_act TYPE decfloat34. lv_exp = 100. call( EXPORTING iv_lot_type = `S` iv_hammer = 500 iv_channel = `B` IMPORTING ev_fee = lv_act ). cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ). ENDMETHOD. METHOD band_second. DATA lv_exp TYPE decfloat34. DATA lv_act TYPE decfloat34. lv_exp = 320. call( EXPORTING iv_lot_type = `S` iv_hammer = 2000 iv_channel = `B` IMPORTING ev_fee = lv_act ). cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ). ENDMETHOD. METHOD band_third. DATA lv_exp TYPE decfloat34. DATA lv_act TYPE decfloat34. lv_exp = 1880. call( EXPORTING iv_lot_type = `S` iv_hammer = 20000 iv_channel = `B` IMPORTING ev_fee = lv_act ). cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ). ENDMETHOD. METHOD online_reduction. DATA lv_exp TYPE decfloat34. DATA lv_act TYPE decfloat34. lv_exp = 90. call( EXPORTING iv_lot_type = `S` iv_hammer = 500 iv_channel = `O` IMPORTING ev_fee = lv_act ). cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ). ENDMETHOD. METHOD premium_rounding. DATA lv_exp TYPE decfloat34. DATA lv_act TYPE decfloat34. DATA lv_hammer TYPE decfloat34. lv_exp = '228.15'. lv_hammer = '1234.56'. call( EXPORTING iv_lot_type = `S` iv_hammer = lv_hammer iv_channel = `B` IMPORTING ev_fee = lv_act ). cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ). ENDMETHOD. METHOD minimum_premium. DATA lv_exp TYPE decfloat34. DATA lv_act TYPE decfloat34. lv_exp = 5. call( EXPORTING iv_lot_type = `S` iv_hammer = 10 iv_channel = `B` IMPORTING ev_fee = lv_act ). cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ). ENDMETHOD. METHOD maximum_premium. DATA lv_exp TYPE decfloat34. DATA lv_act TYPE decfloat34. lv_exp = 5000. call( EXPORTING iv_lot_type = `S` iv_hammer = 100000 iv_channel = `B` IMPORTING ev_fee = lv_act ). cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ). ENDMETHOD. METHOD charity_skips. DATA lv_skip TYPE abap_bool. DATA lv_fee TYPE decfloat34. DATA lv_exp TYPE decfloat34. lv_fee = 7. lv_exp = 7. call( EXPORTING iv_lot_type = `C` iv_hammer = 5000 iv_channel = `B` iv_fee = 7 IMPORTING ev_skip = lv_skip ev_fee = lv_fee ). cl_abap_unit_assert=>assert_equals( exp = abap_true act = lv_skip ). cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_fee ). ENDMETHOD. METHOD negative_hammer. DATA lv_rc TYPE sysubrc. call( EXPORTING iv_lot_type = `S` iv_hammer = -1 iv_channel = `B` IMPORTING ev_subrc = lv_rc ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ). ENDMETHOD. METHOD skip_false_for_sale. DATA lv_skip TYPE abap_bool. call( EXPORTING iv_lot_type = `S` iv_hammer = 500 iv_channel = `B` IMPORTING ev_skip = lv_skip ). cl_abap_unit_assert=>assert_equals( exp = abap_false act = lv_skip ). ENDMETHOD. ENDCLASS.