Files
abap-llm/tasks_gen/eval/G0163/hidden/overdraft_test.clas.abap

221 lines
6.7 KiB
ABAP

CLASS {{p}}overdraft_test DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
CONSTANTS c_zero TYPE {{p}}if_overdraft=>ty_amount VALUE '0.00'.
DATA mo_cut TYPE REF TO {{p}}if_overdraft.
METHODS setup.
METHODS non_positive_amount FOR TESTING.
METHODS zero_days FOR TESTING.
METHODS grace_days_free FOR TESTING.
METHODS tier_one_rate FOR TESTING.
METHODS tier_two_boundary FOR TESTING.
METHODS tier_three_boundary FOR TESTING.
METHODS tier_four_boundary FOR TESTING.
METHODS business_discount FOR TESTING.
METHODS business_rate_floor FOR TESTING.
METHODS minimum_interest FOR TESTING.
METHODS rounding_half_up FOR TESTING.
ENDCLASS.
CLASS {{p}}overdraft_test IMPLEMENTATION.
METHOD setup.
CREATE OBJECT mo_cut TYPE {{p}}overdraft_calc.
ENDMETHOD.
METHOD non_positive_amount.
DATA lv_act TYPE {{p}}if_overdraft=>ty_amount.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '0.00'
iv_days = 30
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = c_zero act = lv_act
msg = 'zero amount' ).
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '-250.00'
iv_days = 30
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = c_zero act = lv_act
msg = 'negative amount' ).
ENDMETHOD.
METHOD zero_days.
DATA lv_act TYPE {{p}}if_overdraft=>ty_amount.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '1000.00'
iv_days = 0
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = c_zero act = lv_act ).
ENDMETHOD.
METHOD grace_days_free.
DATA lv_act TYPE {{p}}if_overdraft=>ty_amount.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '30000.00'
iv_days = 3
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = c_zero act = lv_act ).
ENDMETHOD.
METHOD tier_one_rate.
DATA lv_act TYPE {{p}}if_overdraft=>ty_amount.
DATA lv_exp TYPE {{p}}if_overdraft=>ty_amount.
lv_exp = '120.00'.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '1000.00'
iv_days = 363
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ).
ENDMETHOD.
METHOD tier_two_boundary.
DATA lv_act TYPE {{p}}if_overdraft=>ty_amount.
DATA lv_exp TYPE {{p}}if_overdraft=>ty_amount.
lv_exp = '100.00'.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '1000.01'
iv_days = 363
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act
msg = 'amount above 1000' ).
ENDMETHOD.
METHOD tier_three_boundary.
DATA lv_act TYPE {{p}}if_overdraft=>ty_amount.
DATA lv_exp TYPE {{p}}if_overdraft=>ty_amount.
lv_exp = '400.00'.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '5000.01'
iv_days = 363
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act
msg = 'amount above 5000' ).
lv_exp = '1600.00'.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '20000.00'
iv_days = 363
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act
msg = 'amount 20000' ).
ENDMETHOD.
METHOD tier_four_boundary.
DATA lv_act TYPE {{p}}if_overdraft=>ty_amount.
DATA lv_exp TYPE {{p}}if_overdraft=>ty_amount.
lv_exp = '1300.00'.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '20000.01'
iv_days = 363
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ).
ENDMETHOD.
METHOD business_discount.
DATA lv_act TYPE {{p}}if_overdraft=>ty_amount.
DATA lv_exp TYPE {{p}}if_overdraft=>ty_amount.
lv_exp = '13.33'.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '2000.00'
iv_days = 33
iv_segment = {{p}}if_overdraft=>c_segment_business
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ).
ENDMETHOD.
METHOD business_rate_floor.
DATA lv_act TYPE {{p}}if_overdraft=>ty_amount.
DATA lv_exp TYPE {{p}}if_overdraft=>ty_amount.
lv_exp = '1500.00'.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '30000.00'
iv_days = 363
iv_segment = {{p}}if_overdraft=>c_segment_business
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ).
ENDMETHOD.
METHOD minimum_interest.
DATA lv_act TYPE {{p}}if_overdraft=>ty_amount.
DATA lv_exp TYPE {{p}}if_overdraft=>ty_amount.
lv_exp = '5.00'.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '500.00'
iv_days = 10
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act ).
ENDMETHOD.
METHOD rounding_half_up.
DATA lv_act TYPE {{p}}if_overdraft=>ty_amount.
DATA lv_exp TYPE {{p}}if_overdraft=>ty_amount.
lv_exp = '5.01'.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '715.00'
iv_days = 24
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act
msg = 'exact half cent' ).
lv_exp = '67.56'.
CALL METHOD mo_cut->calculate
EXPORTING
iv_amount = '1234.56'
iv_days = 200
iv_segment = {{p}}if_overdraft=>c_segment_private
RECEIVING
rv_interest = lv_act.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act
msg = 'round up' ).
ENDMETHOD.
ENDCLASS.