Stage 2 summary at 50 accepted trajectories
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
CLASS ltc_rack_billing DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO {{p}}rack_billing.
|
||||
|
||||
METHODS setup.
|
||||
METHODS assert_amount
|
||||
IMPORTING iv_expected TYPE {{p}}rack_billing=>ty_fee
|
||||
iv_actual TYPE {{p}}rack_billing=>ty_fee.
|
||||
|
||||
METHODS one_rack FOR TESTING.
|
||||
METHODS groups_by_customer FOR TESTING.
|
||||
METHODS applies_discount FOR TESTING.
|
||||
METHODS ignores_invalid_rack FOR TESTING.
|
||||
METHODS ignores_duplicate_rack FOR TESTING.
|
||||
METHODS empty_input FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltc_rack_billing IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}rack_billing( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD assert_amount.
|
||||
cl_abap_unit_assert=>assert_equals( exp = iv_expected act = iv_actual ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD one_rack.
|
||||
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
|
||||
lt_racks = VALUE #( ( rack_id = 'R001' customer = 'ALPHA'
|
||||
size_class = 'M' power_class = 'B' ) ).
|
||||
DATA(lt_bills) = mo_cut->calculate( lt_racks ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_bills ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_bills[ 1 ]-rack_count ).
|
||||
assert_amount( iv_expected = '150.00' iv_actual = lt_bills[ 1 ]-total_fee ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD groups_by_customer.
|
||||
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
|
||||
lt_racks = VALUE #(
|
||||
( rack_id = 'R001' customer = 'ALPHA' size_class = 'S' power_class = 'C' )
|
||||
( rack_id = 'R002' customer = 'ALPHA' size_class = 'L' power_class = 'A' )
|
||||
( rack_id = 'R003' customer = 'BETA' size_class = 'M' power_class = 'B' ) ).
|
||||
DATA(lt_bills) = mo_cut->calculate( lt_racks ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_bills ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 'ALPHA' act = lt_bills[ 1 ]-customer ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_bills[ 1 ]-rack_count ).
|
||||
assert_amount( iv_expected = '370.00' iv_actual = lt_bills[ 1 ]-total_fee ).
|
||||
assert_amount( iv_expected = '150.00' iv_actual = lt_bills[ 2 ]-total_fee ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD applies_discount.
|
||||
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
|
||||
DO 10 TIMES.
|
||||
INSERT VALUE #( rack_id = |R{ sy-index }| customer = 'ALPHA'
|
||||
size_class = 'M' power_class = 'B' ) INTO TABLE lt_racks.
|
||||
ENDDO.
|
||||
DATA(lt_bills) = mo_cut->calculate( lt_racks ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 10 act = lt_bills[ 1 ]-rack_count ).
|
||||
assert_amount( iv_expected = '1350.00' iv_actual = lt_bills[ 1 ]-total_fee ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD ignores_invalid_rack.
|
||||
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
|
||||
lt_racks = VALUE #(
|
||||
( rack_id = 'R001' customer = 'ALPHA' size_class = 'S' power_class = 'D' )
|
||||
( rack_id = 'R002' customer = 'ALPHA' size_class = 'M' power_class = 'A' ) ).
|
||||
DATA(lt_bills) = mo_cut->calculate( lt_racks ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_bills[ 1 ]-rack_count ).
|
||||
assert_amount( iv_expected = '120.00' iv_actual = lt_bills[ 1 ]-total_fee ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD ignores_duplicate_rack.
|
||||
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
|
||||
lt_racks = VALUE #(
|
||||
( rack_id = 'R001' customer = 'ALPHA' size_class = 'S' power_class = 'A' )
|
||||
( rack_id = 'R001' customer = 'ALPHA' size_class = 'L' power_class = 'C' ) ).
|
||||
DATA(lt_bills) = mo_cut->calculate( lt_racks ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_bills[ 1 ]-rack_count ).
|
||||
assert_amount( iv_expected = '50.00' iv_actual = lt_bills[ 1 ]-total_fee ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD empty_input.
|
||||
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
|
||||
DATA(lt_bills) = mo_cut->calculate( lt_racks ).
|
||||
cl_abap_unit_assert=>assert_initial( lt_bills ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user