CLASS {{p}}t42_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS call IMPORTING iv_style TYPE string iv_sessions TYPE i iv_fee TYPE decfloat34 DEFAULT 0 EXPORTING ev_deposit TYPE abap_bool ev_fee TYPE decfloat34 ev_subrc TYPE sysubrc. METHODS line_minimum FOR TESTING. METHODS line_two_sessions FOR TESTING. METHODS line_three_sessions FOR TESTING. METHODS line_maximum FOR TESTING. METHODS shade_minimum FOR TESTING. METHODS shade_two_sessions FOR TESTING. METHODS shade_maximum FOR TESTING. METHODS other_style_zero FOR TESTING. METHODS invalid_sessions FOR TESTING. METHODS deposit_long_project FOR TESTING. ENDCLASS. CLASS {{p}}t42_hidden IMPLEMENTATION. METHOD call. ev_fee = iv_fee. CALL FUNCTION '{{P}}TATTOO_FEE' EXPORTING iv_style = iv_style iv_sessions = iv_sessions IMPORTING ev_deposit = ev_deposit CHANGING cv_fee = ev_fee EXCEPTIONS invalid_sessions = 1 OTHERS = 2. ev_subrc = sy-subrc. ENDMETHOD. METHOD line_minimum. call( EXPORTING iv_style = `LINE` iv_sessions = 1 IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '150.00' ) act = lv_fee ). ENDMETHOD. METHOD line_two_sessions. call( EXPORTING iv_style = `LINE` iv_sessions = 2 IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '200.00' ) act = lv_fee ). ENDMETHOD. METHOD line_three_sessions. call( EXPORTING iv_style = `LINE` iv_sessions = 3 IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '266.67' ) act = lv_fee ). ENDMETHOD. METHOD line_maximum. call( EXPORTING iv_style = `LINE` iv_sessions = 12 IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '800.00' ) act = lv_fee ). ENDMETHOD. METHOD shade_minimum. call( EXPORTING iv_style = `SHADE` iv_sessions = 1 IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '110.00' ) act = lv_fee ). ENDMETHOD. METHOD shade_two_sessions. call( EXPORTING iv_style = `SHADE` iv_sessions = 2 IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '146.66' ) act = lv_fee ). ENDMETHOD. METHOD shade_maximum. call( EXPORTING iv_style = `SHADE` iv_sessions = 12 IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '600.00' ) act = lv_fee ). ENDMETHOD. METHOD other_style_zero. call( EXPORTING iv_style = `XX` iv_sessions = 3 IMPORTING ev_fee = DATA(lv_fee) ev_deposit = DATA(lv_deposit) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_fee ). cl_abap_unit_assert=>assert_equals( exp = abap_false act = lv_deposit ). ENDMETHOD. METHOD invalid_sessions. call( EXPORTING iv_style = `LINE` iv_sessions = 0 IMPORTING ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ). ENDMETHOD. METHOD deposit_long_project. DATA lv_fee TYPE decfloat34. DATA lv_deposit TYPE abap_bool. call( EXPORTING iv_style = `LINE` iv_sessions = 6 IMPORTING ev_fee = lv_fee ev_deposit = lv_deposit ). cl_abap_unit_assert=>assert_equals( exp = abap_false act = lv_deposit ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '466.68' ) act = lv_fee ). call( EXPORTING iv_style = `LINE` iv_sessions = 7 IMPORTING ev_fee = lv_fee ev_deposit = lv_deposit ). cl_abap_unit_assert=>assert_equals( exp = abap_true act = lv_deposit ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '533.35' ) act = lv_fee ). ENDMETHOD. ENDCLASS.