Files
abap-llm/tasks_gen/train/G1053/hidden/t02_hidden.clas.abap
2026-10-05 18:02:52 +02:00

158 lines
7.4 KiB
ABAP

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}}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 sums_per_customer FOR TESTING.
METHODS sorted_by_customer FOR TESTING.
METHODS ten_racks_discount FOR TESTING.
METHODS twenty_racks_discount FOR TESTING.
METHODS nine_racks_no_discount FOR TESTING.
METHODS ignores_unknown_size FOR TESTING.
METHODS ignores_unknown_power FOR TESTING.
METHODS ignores_second_rack_id FOR TESTING.
METHODS empty_input FOR TESTING.
METHODS all_classes FOR TESTING.
ENDCLASS.
CLASS {{p}}t02_hidden 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_bills) = mo_cut->calculate( VALUE #( ( rack_id = 'R001' customer = 'ALPHA'
size_class = 'M' power_class = 'B' ) ) ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_bills ) ).
cl_abap_unit_assert=>assert_equals( exp = 'ALPHA' act = lt_bills[ 1 ]-customer ).
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 sums_per_customer.
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 = 'R002' customer = 'ALPHA' size_class = 'S' power_class = 'B' )
( rack_id = 'R003' customer = 'ALPHA' size_class = 'M' power_class = 'A' )
( rack_id = 'R004' customer = 'BETA' size_class = 'L' power_class = 'C' ) ).
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 = 3 act = lt_bills[ 1 ]-rack_count ).
assert_amount( iv_expected = '250.00' iv_actual = lt_bills[ 1 ]-total_fee ).
cl_abap_unit_assert=>assert_equals( exp = 'BETA' act = lt_bills[ 2 ]-customer ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_bills[ 2 ]-rack_count ).
assert_amount( iv_expected = '320.00' iv_actual = lt_bills[ 2 ]-total_fee ).
ENDMETHOD.
METHOD sorted_by_customer.
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
lt_racks = VALUE #(
( rack_id = 'R001' customer = 'ZULU' size_class = 'S' power_class = 'A' )
( rack_id = 'R002' customer = 'ALPHA' size_class = 'S' power_class = 'A' )
( rack_id = 'R003' customer = 'MIKE' size_class = 'S' power_class = 'A' ) ).
DATA(lt_bills) = mo_cut->calculate( lt_racks ).
cl_abap_unit_assert=>assert_equals( exp = 3 act = lines( lt_bills ) ).
cl_abap_unit_assert=>assert_equals( exp = 'ALPHA' act = lt_bills[ 1 ]-customer ).
cl_abap_unit_assert=>assert_equals( exp = 'MIKE' act = lt_bills[ 2 ]-customer ).
cl_abap_unit_assert=>assert_equals( exp = 'ZULU' act = lt_bills[ 3 ]-customer ).
ENDMETHOD.
METHOD ten_racks_discount.
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
DO 10 TIMES.
INSERT VALUE #( rack_id = |R{ sy-index }| customer = 'ALPHA'
size_class = 'S' power_class = 'A' ) INTO TABLE lt_racks.
ENDDO.
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 = 10 act = lt_bills[ 1 ]-rack_count ).
assert_amount( iv_expected = '450.00' iv_actual = lt_bills[ 1 ]-total_fee ).
ENDMETHOD.
METHOD twenty_racks_discount.
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
DO 20 TIMES.
INSERT VALUE #( rack_id = |R{ sy-index }| customer = 'ALPHA'
size_class = 'S' power_class = 'A' ) INTO TABLE lt_racks.
ENDDO.
DATA(lt_bills) = mo_cut->calculate( lt_racks ).
cl_abap_unit_assert=>assert_equals( exp = 20 act = lt_bills[ 1 ]-rack_count ).
assert_amount( iv_expected = '800.00' iv_actual = lt_bills[ 1 ]-total_fee ).
ENDMETHOD.
METHOD nine_racks_no_discount.
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
DO 9 TIMES.
INSERT VALUE #( rack_id = |R{ sy-index }| customer = 'ALPHA'
size_class = 'S' power_class = 'A' ) INTO TABLE lt_racks.
ENDDO.
DATA(lt_bills) = mo_cut->calculate( lt_racks ).
cl_abap_unit_assert=>assert_equals( exp = 9 act = lt_bills[ 1 ]-rack_count ).
assert_amount( iv_expected = '450.00' iv_actual = lt_bills[ 1 ]-total_fee ).
ENDMETHOD.
METHOD ignores_unknown_size.
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
lt_racks = VALUE #(
( rack_id = 'R001' customer = 'ALPHA' size_class = 'X' power_class = 'A' )
( rack_id = 'R002' customer = 'ALPHA' size_class = 'S' power_class = 'A' ) ).
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 = '50.00' iv_actual = lt_bills[ 1 ]-total_fee ).
ENDMETHOD.
METHOD ignores_unknown_power.
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
lt_racks = VALUE #(
( rack_id = 'R001' customer = 'ALPHA' size_class = 'L' power_class = 'Z' )
( rack_id = 'R002' customer = 'ALPHA' size_class = 'L' 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 = '280.00' iv_actual = lt_bills[ 1 ]-total_fee ).
ENDMETHOD.
METHOD ignores_second_rack_id.
DATA lt_racks TYPE {{p}}rack_billing=>tt_racks.
lt_racks = VALUE #(
( rack_id = 'R001' customer = 'ALPHA' size_class = 'M' power_class = 'A' )
( rack_id = 'R001' customer = 'BETA' size_class = 'L' power_class = 'C' ) ).
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 = 'ALPHA' act = lt_bills[ 1 ]-customer ).
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 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.
METHOD all_classes.
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 = 'M' power_class = 'C' )
( rack_id = 'R003' customer = 'ALPHA' size_class = 'L' power_class = 'C' ) ).
DATA(lt_bills) = mo_cut->calculate( lt_racks ).
cl_abap_unit_assert=>assert_equals( exp = 3 act = lt_bills[ 1 ]-rack_count ).
assert_amount( iv_expected = '630.00' iv_actual = lt_bills[ 1 ]-total_fee ).
ENDMETHOD.
ENDCLASS.