CLASS ltc_pricer DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}heli_pricer. METHODS setup. METHODS scenic_fee FOR TESTING. METHODS member_discount FOR TESTING. METHODS training_fee FOR TESTING. METHODS charter_skips FOR TESTING. METHODS rejects_zero_passengers FOR TESTING. ENDCLASS. CLASS ltc_pricer IMPLEMENTATION. METHOD setup. mo_cut = NEW #( ). ENDMETHOD. METHOD scenic_fee. DATA lv_fee TYPE decfloat34. DATA lv_skip TYPE abap_bool. mo_cut->calculate( EXPORTING iv_tour_type = `SC` iv_passengers = 2 iv_minutes = 10 iv_member = abap_false IMPORTING ev_skip = lv_skip ev_fee = lv_fee ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 110 ) act = lv_fee ). cl_abap_unit_assert=>assert_false( lv_skip ). ENDMETHOD. METHOD member_discount. DATA lv_fee TYPE decfloat34. mo_cut->calculate( EXPORTING iv_tour_type = `SC` iv_passengers = 3 iv_minutes = 7 iv_member = abap_true IMPORTING ev_fee = lv_fee ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '88.38' ) act = lv_fee ). ENDMETHOD. METHOD training_fee. DATA lv_fee TYPE decfloat34. mo_cut->calculate( EXPORTING iv_tour_type = `TR` iv_passengers = 2 iv_minutes = 10 iv_member = abap_false IMPORTING ev_fee = lv_fee ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 120 ) act = lv_fee ). ENDMETHOD. METHOD charter_skips. DATA lv_fee TYPE decfloat34. DATA lv_skip TYPE abap_bool. mo_cut->calculate( EXPORTING iv_tour_type = `CH` iv_passengers = 2 iv_minutes = 10 iv_member = abap_false IMPORTING ev_skip = lv_skip ev_fee = lv_fee ). cl_abap_unit_assert=>assert_true( lv_skip ). ENDMETHOD. METHOD rejects_zero_passengers. TRY. mo_cut->calculate( EXPORTING iv_tour_type = `SC` iv_passengers = 0 iv_minutes = 10 iv_member = abap_false IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>fail( ). CATCH {{p}}cx_heli_invalid INTO DATA(lo_error). cl_abap_unit_assert=>assert_equals( exp = {{p}}cx_heli_invalid=>co_reason-passengers act = lo_error->mv_reason ). ENDTRY. ENDMETHOD. ENDCLASS.