Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
102 lines
3.3 KiB
ABAP
102 lines
3.3 KiB
ABAP
CLASS {{p}}t42_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}if_commission.
|
|
METHODS setup.
|
|
METHODS assert_bonus
|
|
IMPORTING iv_expected TYPE {{p}}if_commission=>ty_amount
|
|
iv_sales TYPE {{p}}if_commission=>ty_amount
|
|
iv_target TYPE {{p}}if_commission=>ty_amount
|
|
iv_years TYPE i
|
|
iv_msg TYPE string.
|
|
METHODS zero_sales FOR TESTING.
|
|
METHODS zero_target FOR TESTING.
|
|
METHODS negative_sales FOR TESTING.
|
|
METHODS below_half_target FOR TESTING.
|
|
METHODS exactly_half_target FOR TESTING.
|
|
METHODS at_target FOR TESTING.
|
|
METHODS above_target FOR TESTING.
|
|
METHODS top_tier FOR TESTING.
|
|
METHODS rounds_to_cent FOR TESTING.
|
|
METHODS loyalty_five_years FOR TESTING.
|
|
METHODS loyalty_ten_years FOR TESTING.
|
|
METHODS cap_applied FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}t42_hidden IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}commission_calc( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD assert_bonus.
|
|
cl_abap_unit_assert=>assert_equals(
|
|
exp = iv_expected
|
|
act = mo_cut->calculate( iv_sales = iv_sales
|
|
iv_target = iv_target
|
|
iv_years = iv_years )
|
|
msg = iv_msg ).
|
|
ENDMETHOD.
|
|
|
|
METHOD zero_sales.
|
|
assert_bonus( iv_expected = 0 iv_sales = 0 iv_target = 1000
|
|
iv_years = 0 iv_msg = 'zero sales' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD zero_target.
|
|
assert_bonus( iv_expected = 0 iv_sales = 1000 iv_target = 0
|
|
iv_years = 0 iv_msg = 'zero target' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD negative_sales.
|
|
assert_bonus( iv_expected = 0 iv_sales = -100 iv_target = 1000
|
|
iv_years = 0 iv_msg = 'negative sales' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD below_half_target.
|
|
assert_bonus( iv_expected = 0 iv_sales = '499.99' iv_target = 1000
|
|
iv_years = 0 iv_msg = 'below half target' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD exactly_half_target.
|
|
assert_bonus( iv_expected = 5 iv_sales = 500 iv_target = 1000
|
|
iv_years = 0 iv_msg = 'exactly half target' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD at_target.
|
|
assert_bonus( iv_expected = 10 iv_sales = 1000 iv_target = 1000
|
|
iv_years = 0 iv_msg = 'at target' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD above_target.
|
|
assert_bonus( iv_expected = 16 iv_sales = 1200 iv_target = 1000
|
|
iv_years = 0 iv_msg = 'above target' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD top_tier.
|
|
assert_bonus( iv_expected = 50 iv_sales = 2000 iv_target = 1000
|
|
iv_years = 0 iv_msg = 'top tier' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rounds_to_cent.
|
|
assert_bonus( iv_expected = '12.35' iv_sales = '1234.55'
|
|
iv_target = '1234.55'
|
|
iv_years = 0 iv_msg = 'rounding' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD loyalty_five_years.
|
|
assert_bonus( iv_expected = 210 iv_sales = 1000 iv_target = 1000
|
|
iv_years = 5 iv_msg = 'five years' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD loyalty_ten_years.
|
|
assert_bonus( iv_expected = 510 iv_sales = 1000 iv_target = 1000
|
|
iv_years = 10 iv_msg = 'ten years' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD cap_applied.
|
|
assert_bonus( iv_expected = 5000 iv_sales = 100000 iv_target = 1000
|
|
iv_years = 10 iv_msg = 'cap' ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|