CLASS ltc_move_pricer DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. TYPES ty_price TYPE p LENGTH 8 DECIMALS 2. DATA mo_cut TYPE REF TO {{p}}move_pricer. METHODS setup. METHODS base_fee_only FOR TESTING. METHODS distance_fee FOR TESTING. METHODS first_floor FOR TESTING. METHODS packing_fee FOR TESTING. METHODS weekend_surcharge FOR TESTING. METHODS combined_move FOR TESTING. ENDCLASS. CLASS ltc_move_pricer IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}move_pricer( ). ENDMETHOD. METHOD base_fee_only. cl_abap_unit_assert=>assert_equals( exp = CONV ty_price( '250.00' ) act = mo_cut->calculate( iv_distance_km = 0 iv_volume_m3 = 0 iv_floor = 0 iv_packing = abap_false iv_weekend = abap_false ) ). ENDMETHOD. METHOD distance_fee. cl_abap_unit_assert=>assert_equals( exp = CONV ty_price( '268.00' ) act = mo_cut->calculate( iv_distance_km = 15 iv_volume_m3 = 0 iv_floor = 0 iv_packing = abap_false iv_weekend = abap_false ) ). ENDMETHOD. METHOD first_floor. cl_abap_unit_assert=>assert_equals( exp = CONV ty_price( '265.00' ) act = mo_cut->calculate( iv_distance_km = 0 iv_volume_m3 = 0 iv_floor = 1 iv_packing = abap_false iv_weekend = abap_false ) ). ENDMETHOD. METHOD packing_fee. cl_abap_unit_assert=>assert_equals( exp = CONV ty_price( '430.00' ) act = mo_cut->calculate( iv_distance_km = 0 iv_volume_m3 = 0 iv_floor = 0 iv_packing = abap_true iv_weekend = abap_false ) ). ENDMETHOD. METHOD weekend_surcharge. cl_abap_unit_assert=>assert_equals( exp = CONV ty_price( '441.28' ) act = mo_cut->calculate( iv_distance_km = 20 iv_volume_m3 = 3 iv_floor = 0 iv_packing = abap_false iv_weekend = abap_true ) ). ENDMETHOD. METHOD combined_move. cl_abap_unit_assert=>assert_equals( exp = CONV ty_price( '669.76' ) act = mo_cut->calculate( iv_distance_km = 15 iv_volume_m3 = 3 iv_floor = 2 iv_packing = abap_true iv_weekend = abap_true ) ). ENDMETHOD. ENDCLASS.