Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
92 lines
4.1 KiB
ABAP
92 lines
4.1 KiB
ABAP
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.
|