Stage 2 summary at 50 accepted trajectories
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
124
tasks_gen/train/G1123/reference/airport_fee.clas.abap
Normal file
124
tasks_gen/train/G1123/reference/airport_fee.clas.abap
Normal file
@@ -0,0 +1,124 @@
|
||||
CLASS {{p}}airport_fee DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_class TYPE c LENGTH 1.
|
||||
TYPES ty_zone TYPE c LENGTH 2.
|
||||
TYPES ty_flag TYPE c LENGTH 1.
|
||||
TYPES ty_curr TYPE c LENGTH 3.
|
||||
TYPES ty_amount TYPE p LENGTH 10 DECIMALS 2.
|
||||
|
||||
METHODS landing_fee
|
||||
IMPORTING iv_class TYPE ty_class
|
||||
iv_zone TYPE ty_zone
|
||||
iv_night TYPE ty_flag
|
||||
iv_currency TYPE ty_curr
|
||||
iv_tonnes TYPE i
|
||||
RETURNING VALUE(rv_fee) TYPE ty_amount.
|
||||
|
||||
METHODS passenger_fee
|
||||
IMPORTING iv_zone TYPE ty_zone
|
||||
iv_currency TYPE ty_curr
|
||||
iv_passengers TYPE i
|
||||
RETURNING VALUE(rv_fee) TYPE ty_amount.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES ty_calc TYPE p LENGTH 13 DECIMALS 4.
|
||||
|
||||
CONSTANTS:
|
||||
c_night_per_tonne TYPE ty_amount VALUE '7.50',
|
||||
c_pax_fee TYPE ty_amount VALUE '12.37',
|
||||
c_full_percent TYPE ty_amount VALUE '100.00',
|
||||
BEGIN OF c_rate,
|
||||
eur TYPE ty_amount VALUE '1.00',
|
||||
usd TYPE ty_amount VALUE '1.15',
|
||||
chf TYPE ty_amount VALUE '0.85',
|
||||
END OF c_rate.
|
||||
|
||||
METHODS base_per_tonne
|
||||
IMPORTING iv_class TYPE ty_class
|
||||
RETURNING VALUE(rv_fee) TYPE ty_amount.
|
||||
METHODS zone_percent
|
||||
IMPORTING iv_zone TYPE ty_zone
|
||||
RETURNING VALUE(rv_percent) TYPE ty_amount.
|
||||
METHODS zone_surcharge
|
||||
IMPORTING iv_zone TYPE ty_zone
|
||||
RETURNING VALUE(rv_surcharge) TYPE ty_amount.
|
||||
METHODS convert
|
||||
IMPORTING iv_amount TYPE ty_calc
|
||||
iv_currency TYPE ty_curr
|
||||
RETURNING VALUE(rv_fee) TYPE ty_calc.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}airport_fee IMPLEMENTATION.
|
||||
METHOD landing_fee.
|
||||
IF iv_tonnes < 1.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
DATA lv_base TYPE ty_amount.
|
||||
lv_base = base_per_tonne( iv_class ).
|
||||
IF lv_base IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
DATA lv_percent TYPE ty_amount.
|
||||
lv_percent = c_full_percent + zone_percent( iv_zone ).
|
||||
DATA lv_per_tonne TYPE ty_calc.
|
||||
lv_per_tonne = lv_base * lv_percent / c_full_percent.
|
||||
IF iv_night = 'N'.
|
||||
lv_per_tonne = lv_per_tonne + c_night_per_tonne.
|
||||
ENDIF.
|
||||
DATA lv_converted TYPE ty_calc.
|
||||
lv_converted = convert( iv_amount = lv_per_tonne iv_currency = iv_currency ).
|
||||
rv_fee = lv_converted * iv_tonnes.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD passenger_fee.
|
||||
IF iv_passengers < 1.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
DATA lv_per_pax TYPE ty_amount.
|
||||
lv_per_pax = c_pax_fee + zone_surcharge( iv_zone ).
|
||||
DATA lv_converted TYPE ty_calc.
|
||||
lv_converted = convert( iv_amount = lv_per_pax iv_currency = iv_currency ).
|
||||
rv_fee = lv_converted * iv_passengers.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD base_per_tonne.
|
||||
CASE iv_class.
|
||||
WHEN 'L'.
|
||||
rv_fee = '12.50'.
|
||||
WHEN 'M'.
|
||||
rv_fee = '24.50'.
|
||||
WHEN 'H'.
|
||||
rv_fee = '52.50'.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zone_percent.
|
||||
CASE iv_zone.
|
||||
WHEN 'Z2'.
|
||||
rv_percent = '12.50'.
|
||||
WHEN 'Z3'.
|
||||
rv_percent = '27.50'.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zone_surcharge.
|
||||
CASE iv_zone.
|
||||
WHEN 'Z2'.
|
||||
rv_surcharge = '1.45'.
|
||||
WHEN 'Z3'.
|
||||
rv_surcharge = '2.90'.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD convert.
|
||||
CASE iv_currency.
|
||||
WHEN 'EUR'.
|
||||
rv_fee = round( val = iv_amount * c_rate-eur dec = 2 ).
|
||||
WHEN 'USD'.
|
||||
rv_fee = round( val = iv_amount * c_rate-usd dec = 2 ).
|
||||
WHEN 'CHF'.
|
||||
rv_fee = round( val = iv_amount * c_rate-chf dec = 2 ).
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
95
tasks_gen/train/G1123/reference/airport_fee.testclasses.abap
Normal file
95
tasks_gen/train/G1123/reference/airport_fee.testclasses.abap
Normal file
@@ -0,0 +1,95 @@
|
||||
CLASS ltc_airport_fee DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO {{p}}airport_fee.
|
||||
METHODS setup.
|
||||
METHODS assert_fee
|
||||
IMPORTING iv_exp TYPE {{p}}airport_fee=>ty_amount
|
||||
iv_act TYPE {{p}}airport_fee=>ty_amount.
|
||||
METHODS light_zone1_eur FOR TESTING.
|
||||
METHODS medium_zone2_night_eur FOR TESTING.
|
||||
METHODS heavy_zone3_night_chf FOR TESTING.
|
||||
METHODS light_zone2_eur FOR TESTING.
|
||||
METHODS unknown_class_zero FOR TESTING.
|
||||
METHODS unknown_curr_zero FOR TESTING.
|
||||
METHODS pax_zone2_eur FOR TESTING.
|
||||
METHODS zero_pax_zero FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltc_airport_fee IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}airport_fee( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD assert_fee.
|
||||
cl_abap_unit_assert=>assert_equals( exp = iv_exp act = iv_act ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD light_zone1_eur.
|
||||
assert_fee( iv_exp = '125.00'
|
||||
iv_act = mo_cut->landing_fee( iv_class = 'L'
|
||||
iv_zone = 'Z1'
|
||||
iv_night = 'D'
|
||||
iv_currency = 'EUR'
|
||||
iv_tonnes = 10 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD medium_zone2_night_eur.
|
||||
assert_fee( iv_exp = '701.20'
|
||||
iv_act = mo_cut->landing_fee( iv_class = 'M'
|
||||
iv_zone = 'Z2'
|
||||
iv_night = 'N'
|
||||
iv_currency = 'EUR'
|
||||
iv_tonnes = 20 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD heavy_zone3_night_chf.
|
||||
assert_fee( iv_exp = '1898.10'
|
||||
iv_act = mo_cut->landing_fee( iv_class = 'H'
|
||||
iv_zone = 'Z3'
|
||||
iv_night = 'N'
|
||||
iv_currency = 'CHF'
|
||||
iv_tonnes = 30 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD light_zone2_eur.
|
||||
assert_fee( iv_exp = '562.40'
|
||||
iv_act = mo_cut->landing_fee( iv_class = 'L'
|
||||
iv_zone = 'Z2'
|
||||
iv_night = 'D'
|
||||
iv_currency = 'EUR'
|
||||
iv_tonnes = 40 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD unknown_class_zero.
|
||||
assert_fee( iv_exp = '0.00'
|
||||
iv_act = mo_cut->landing_fee( iv_class = 'X'
|
||||
iv_zone = 'Z1'
|
||||
iv_night = 'D'
|
||||
iv_currency = 'EUR'
|
||||
iv_tonnes = 10 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD unknown_curr_zero.
|
||||
assert_fee( iv_exp = '0.00'
|
||||
iv_act = mo_cut->landing_fee( iv_class = 'M'
|
||||
iv_zone = 'Z1'
|
||||
iv_night = 'D'
|
||||
iv_currency = 'GBP'
|
||||
iv_tonnes = 10 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD pax_zone2_eur.
|
||||
assert_fee( iv_exp = '1382.00'
|
||||
iv_act = mo_cut->passenger_fee( iv_zone = 'Z2'
|
||||
iv_currency = 'EUR'
|
||||
iv_passengers = 100 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zero_pax_zero.
|
||||
assert_fee( iv_exp = '0.00'
|
||||
iv_act = mo_cut->passenger_fee( iv_zone = 'Z1'
|
||||
iv_currency = 'EUR'
|
||||
iv_passengers = 0 ) ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user