CLASS {{p}}t_mkt_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS call IMPORTING iv_size TYPE string iv_days TYPE i iv_power TYPE abap_bool EXPORTING ev_fee TYPE decfloat34 ev_subrc TYPE sysubrc. METHODS small_one_day FOR TESTING. METHODS medium_two_days_power FOR TESTING. METHODS large_one_day FOR TESTING. METHODS no_reduction_four_days FOR TESTING. METHODS reduction_five_days FOR TESTING. METHODS reduction_rounding FOR TESTING. METHODS reduction_large_six_days FOR TESTING. METHODS invalid_days_zero FOR TESTING. METHODS invalid_days_negative FOR TESTING. METHODS invalid_size FOR TESTING. ENDCLASS. CLASS {{p}}t_mkt_hidden IMPLEMENTATION. METHOD call. ev_fee = 0. CALL FUNCTION '{{P}}MKT_STALL_FEE' EXPORTING iv_stall_size = iv_size iv_days = iv_days iv_power = iv_power IMPORTING ev_fee = ev_fee EXCEPTIONS invalid_days = 1 invalid_size = 2 OTHERS = 3. ev_subrc = sy-subrc. ENDMETHOD. METHOD small_one_day. call( EXPORTING iv_size = 'S' iv_days = 1 iv_power = abap_false IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '12.00' ) act = lv_fee ). ENDMETHOD. METHOD medium_two_days_power. call( EXPORTING iv_size = 'M' iv_days = 2 iv_power = abap_true IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '45.00' ) act = lv_fee ). ENDMETHOD. METHOD large_one_day. call( EXPORTING iv_size = 'L' iv_days = 1 iv_power = abap_false IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '35.00' ) act = lv_fee ). ENDMETHOD. METHOD no_reduction_four_days. call( EXPORTING iv_size = 'M' iv_days = 4 iv_power = abap_false IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '80.00' ) act = lv_fee ). ENDMETHOD. METHOD reduction_five_days. call( EXPORTING iv_size = 'S' iv_days = 5 iv_power = abap_false IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '51.00' ) act = lv_fee ). ENDMETHOD. METHOD reduction_rounding. call( EXPORTING iv_size = 'S' iv_days = 5 iv_power = abap_true IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '61.62' ) act = lv_fee ). ENDMETHOD. METHOD reduction_large_six_days. call( EXPORTING iv_size = 'L' iv_days = 6 iv_power = abap_true IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '191.25' ) act = lv_fee ). ENDMETHOD. METHOD invalid_days_zero. call( EXPORTING iv_size = 'S' iv_days = 0 iv_power = abap_false IMPORTING ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ). ENDMETHOD. METHOD invalid_days_negative. call( EXPORTING iv_size = 'M' iv_days = -3 iv_power = abap_false IMPORTING ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ). ENDMETHOD. METHOD invalid_size. call( EXPORTING iv_size = 'X' iv_days = 3 iv_power = abap_false IMPORTING ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_subrc ). ENDMETHOD. ENDCLASS.