Step F first pass: 81/92 accepted; budget floor 60 calls; rejected slots moved for regeneration
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
CLASS ltc_trade_in_valuer DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO {{p}}if_trade_in.
|
||||
METHODS setup.
|
||||
METHODS premium_new_car FOR TESTING.
|
||||
METHODS volume_one_year FOR TESTING.
|
||||
METHODS mileage_rounds_down FOR TESTING.
|
||||
METHODS floor_at_minimum FOR TESTING.
|
||||
METHODS unknown_brand FOR TESTING.
|
||||
METHODS unknown_grade FOR TESTING.
|
||||
METHODS negative_age FOR TESTING.
|
||||
METHODS mileage_too_high FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltc_trade_in_valuer IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}trade_in_valuer( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD premium_new_car.
|
||||
DATA(ls_result) = mo_cut->assess( iv_brand = {{p}}if_trade_in=>c_brand-premium
|
||||
iv_grade = {{p}}if_trade_in=>c_grade-b
|
||||
iv_age_months = 0
|
||||
iv_mileage = 0 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 30000 act = ls_result-amount ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-ok
|
||||
act = ls_result-reason ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD volume_one_year.
|
||||
DATA(ls_result) = mo_cut->assess( iv_brand = {{p}}if_trade_in=>c_brand-volume
|
||||
iv_grade = {{p}}if_trade_in=>c_grade-a
|
||||
iv_age_months = 12
|
||||
iv_mileage = 0 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 19360 act = ls_result-amount ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD mileage_rounds_down.
|
||||
DATA(ls_result) = mo_cut->assess( iv_brand = {{p}}if_trade_in=>c_brand-volume
|
||||
iv_grade = {{p}}if_trade_in=>c_grade-b
|
||||
iv_age_months = 0
|
||||
iv_mileage = 25000 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 19600 act = ls_result-amount ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD floor_at_minimum.
|
||||
DATA(ls_result) = mo_cut->assess( iv_brand = {{p}}if_trade_in=>c_brand-budget
|
||||
iv_grade = {{p}}if_trade_in=>c_grade-d
|
||||
iv_age_months = 600
|
||||
iv_mileage = 0 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 500 act = ls_result-amount ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD unknown_brand.
|
||||
DATA(ls_result) = mo_cut->assess( iv_brand = 'FORD'
|
||||
iv_grade = {{p}}if_trade_in=>c_grade-b
|
||||
iv_age_months = 0
|
||||
iv_mileage = 0 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-brand
|
||||
act = ls_result-reason ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD unknown_grade.
|
||||
DATA(ls_result) = mo_cut->assess( iv_brand = {{p}}if_trade_in=>c_brand-volume
|
||||
iv_grade = 'X'
|
||||
iv_age_months = 0
|
||||
iv_mileage = 0 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-grade
|
||||
act = ls_result-reason ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD negative_age.
|
||||
DATA(ls_result) = mo_cut->assess( iv_brand = {{p}}if_trade_in=>c_brand-volume
|
||||
iv_grade = {{p}}if_trade_in=>c_grade-b
|
||||
iv_age_months = -1
|
||||
iv_mileage = 0 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-age
|
||||
act = ls_result-reason ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD mileage_too_high.
|
||||
DATA(ls_result) = mo_cut->assess( iv_brand = {{p}}if_trade_in=>c_brand-volume
|
||||
iv_grade = {{p}}if_trade_in=>c_grade-b
|
||||
iv_age_months = 0
|
||||
iv_mileage = 1000001 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-mileage
|
||||
act = ls_result-reason ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user