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:
Kral
2026-10-03 12:10:52 +02:00
parent d3250acfb8
commit 39769afce8
741 changed files with 40573 additions and 317 deletions

View File

@@ -0,0 +1,139 @@
CLASS {{p}}t02_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
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 premium_age_mileage FOR TESTING.
METHODS mileage_rounds_down FOR TESTING.
METHODS budget_grade_c FOR TESTING.
METHODS floor_at_minimum FOR TESTING.
METHODS unknown_brand FOR TESTING.
METHODS unknown_grade FOR TESTING.
METHODS negative_age FOR TESTING.
METHODS age_too_high FOR TESTING.
METHODS negative_mileage FOR TESTING.
METHODS mileage_too_high FOR TESTING.
ENDCLASS.
CLASS {{p}}t02_hidden 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 ).
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-ok
act = ls_result-reason ).
ENDMETHOD.
METHOD premium_age_mileage.
DATA(ls_result) = mo_cut->assess( iv_brand = {{p}}if_trade_in=>c_brand-premium
iv_grade = {{p}}if_trade_in=>c_grade-a
iv_age_months = 12
iv_mileage = 20000 ).
cl_abap_unit_assert=>assert_equals( exp = 28380 act = ls_result-amount ).
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-ok
act = ls_result-reason ).
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 ).
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-ok
act = ls_result-reason ).
ENDMETHOD.
METHOD budget_grade_c.
DATA(ls_result) = mo_cut->assess( iv_brand = {{p}}if_trade_in=>c_brand-budget
iv_grade = {{p}}if_trade_in=>c_grade-c
iv_age_months = 12
iv_mileage = 0 ).
cl_abap_unit_assert=>assert_equals( exp = 8448 act = ls_result-amount ).
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-ok
act = ls_result-reason ).
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-c
iv_age_months = 300
iv_mileage = 0 ).
cl_abap_unit_assert=>assert_equals( exp = 500 act = ls_result-amount ).
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-ok
act = ls_result-reason ).
ENDMETHOD.
METHOD unknown_brand.
DATA(ls_result) = mo_cut->assess( iv_brand = 'FORD'
iv_grade = 'X'
iv_age_months = -1
iv_mileage = -1 ).
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 = -1
iv_mileage = -1 ).
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 = -1 ).
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-age
act = ls_result-reason ).
ENDMETHOD.
METHOD age_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 = 601
iv_mileage = 0 ).
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-age
act = ls_result-reason ).
ENDMETHOD.
METHOD negative_mileage.
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 = -1 ).
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_trade_in=>c_reason-mileage
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.