Pipeline controller: plan 2 (hard +, error +50 %), backlog throttle, 2 trajectory workers, stop rules, summaries every 50; budget reserve
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
105
tasks_gen/train/G1312/reference/phone_repair_pricer.clas.abap
Normal file
105
tasks_gen/train/G1312/reference/phone_repair_pricer.clas.abap
Normal file
@@ -0,0 +1,105 @@
|
||||
CLASS {{p}}phone_repair_pricer DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_device TYPE c LENGTH 6.
|
||||
TYPES ty_repair TYPE c LENGTH 8.
|
||||
TYPES ty_price TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
CONSTANTS c_device_basic TYPE ty_device VALUE 'BASIC'.
|
||||
CONSTANTS c_device_mid TYPE ty_device VALUE 'MID'.
|
||||
CONSTANTS c_device_high TYPE ty_device VALUE 'HIGH'.
|
||||
|
||||
CONSTANTS c_repair_screen TYPE ty_repair VALUE 'SCREEN'.
|
||||
CONSTANTS c_repair_battery TYPE ty_repair VALUE 'BATTERY'.
|
||||
CONSTANTS c_repair_board TYPE ty_repair VALUE 'BOARD'.
|
||||
CONSTANTS c_repair_camera TYPE ty_repair VALUE 'CAMERA'.
|
||||
CONSTANTS c_repair_port TYPE ty_repair VALUE 'PORT'.
|
||||
|
||||
METHODS calculate_price
|
||||
IMPORTING iv_device TYPE ty_device
|
||||
iv_repair TYPE ty_repair
|
||||
iv_express TYPE abap_bool
|
||||
iv_warranty TYPE abap_bool
|
||||
RETURNING VALUE(rv_price) TYPE ty_price.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS c_base_screen TYPE ty_price VALUE '89.00'.
|
||||
CONSTANTS c_base_battery TYPE ty_price VALUE '19.00'.
|
||||
CONSTANTS c_base_board TYPE ty_price VALUE '149.00'.
|
||||
CONSTANTS c_base_camera TYPE ty_price VALUE '59.00'.
|
||||
CONSTANTS c_base_port TYPE ty_price VALUE '49.00'.
|
||||
CONSTANTS c_factor_basic TYPE ty_price VALUE '1.00'.
|
||||
CONSTANTS c_factor_mid TYPE ty_price VALUE '1.10'.
|
||||
CONSTANTS c_factor_high TYPE ty_price VALUE '1.25'.
|
||||
CONSTANTS c_express_fee TYPE ty_price VALUE '15.00'.
|
||||
CONSTANTS c_warranty_rate TYPE ty_price VALUE '0.80'.
|
||||
CONSTANTS c_minimum_price TYPE ty_price VALUE '25.00'.
|
||||
|
||||
METHODS base_price
|
||||
IMPORTING iv_repair TYPE ty_repair
|
||||
RETURNING VALUE(rv_price) TYPE ty_price.
|
||||
|
||||
METHODS device_factor
|
||||
IMPORTING iv_device TYPE ty_device
|
||||
RETURNING VALUE(rv_factor) TYPE ty_price.
|
||||
|
||||
METHODS price_with_extras
|
||||
IMPORTING iv_price TYPE ty_price
|
||||
iv_express TYPE abap_bool
|
||||
iv_warranty TYPE abap_bool
|
||||
RETURNING VALUE(rv_price) TYPE ty_price.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}phone_repair_pricer IMPLEMENTATION.
|
||||
METHOD calculate_price.
|
||||
rv_price = base_price( iv_repair ).
|
||||
IF rv_price IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
rv_price = rv_price * device_factor( iv_device ).
|
||||
rv_price = price_with_extras( iv_price = rv_price
|
||||
iv_express = iv_express
|
||||
iv_warranty = iv_warranty ).
|
||||
|
||||
IF rv_price < c_minimum_price.
|
||||
rv_price = c_minimum_price.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD base_price.
|
||||
CASE iv_repair.
|
||||
WHEN c_repair_screen.
|
||||
rv_price = c_base_screen.
|
||||
WHEN c_repair_battery.
|
||||
rv_price = c_base_battery.
|
||||
WHEN c_repair_board.
|
||||
rv_price = c_base_board.
|
||||
WHEN c_repair_camera.
|
||||
rv_price = c_base_camera.
|
||||
WHEN c_repair_port.
|
||||
rv_price = c_base_port.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD device_factor.
|
||||
CASE iv_device.
|
||||
WHEN c_device_mid.
|
||||
rv_factor = c_factor_mid.
|
||||
WHEN c_device_high.
|
||||
rv_factor = c_factor_high.
|
||||
WHEN OTHERS.
|
||||
rv_factor = c_factor_basic.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD price_with_extras.
|
||||
rv_price = iv_price.
|
||||
IF iv_express = abap_true.
|
||||
rv_price = rv_price + c_express_fee.
|
||||
ENDIF.
|
||||
IF iv_warranty = abap_true.
|
||||
rv_price = rv_price * c_warranty_rate.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
@@ -0,0 +1,84 @@
|
||||
CLASS ltc_phone_repair_pricer DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT RISK LEVEL HARMLESS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES ty_price TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
CONSTANTS c_screen_basic TYPE ty_price VALUE '89.00'.
|
||||
CONSTANTS c_port_high TYPE ty_price VALUE '61.25'.
|
||||
CONSTANTS c_camera_express TYPE ty_price VALUE '74.00'.
|
||||
CONSTANTS c_camera_full TYPE ty_price VALUE '59.20'.
|
||||
CONSTANTS c_minimum TYPE ty_price VALUE '25.00'.
|
||||
CONSTANTS c_zero TYPE ty_price VALUE '0.00'.
|
||||
|
||||
DATA mo_cut TYPE REF TO {{p}}phone_repair_pricer.
|
||||
|
||||
METHODS setup.
|
||||
METHODS base_price_screen FOR TESTING.
|
||||
METHODS device_factor_high FOR TESTING.
|
||||
METHODS express_fee FOR TESTING.
|
||||
METHODS warranty_rate FOR TESTING.
|
||||
METHODS minimum_price FOR TESTING.
|
||||
METHODS unknown_repair FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltc_phone_repair_pricer IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}phone_repair_pricer( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD base_price_screen.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = c_screen_basic
|
||||
act = mo_cut->calculate_price( iv_device = 'BASIC'
|
||||
iv_repair = 'SCREEN'
|
||||
iv_express = abap_false
|
||||
iv_warranty = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD device_factor_high.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = c_port_high
|
||||
act = mo_cut->calculate_price( iv_device = 'HIGH'
|
||||
iv_repair = 'PORT'
|
||||
iv_express = abap_false
|
||||
iv_warranty = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD express_fee.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = c_camera_express
|
||||
act = mo_cut->calculate_price( iv_device = 'BASIC'
|
||||
iv_repair = 'CAMERA'
|
||||
iv_express = abap_true
|
||||
iv_warranty = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD warranty_rate.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = c_camera_full
|
||||
act = mo_cut->calculate_price( iv_device = 'BASIC'
|
||||
iv_repair = 'CAMERA'
|
||||
iv_express = abap_true
|
||||
iv_warranty = abap_true ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD minimum_price.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = c_minimum
|
||||
act = mo_cut->calculate_price( iv_device = 'BASIC'
|
||||
iv_repair = 'BATTERY'
|
||||
iv_express = abap_false
|
||||
iv_warranty = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD unknown_repair.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = c_zero
|
||||
act = mo_cut->calculate_price( iv_device = 'HIGH'
|
||||
iv_repair = 'SPEAKER'
|
||||
iv_express = abap_true
|
||||
iv_warranty = abap_true ) ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user