Files
abap-llm/tasks_gen/eval/G0120/hidden/t02_hidden.clas.abap

152 lines
8.0 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}}if_meter_reading.
METHODS setup.
METHODS assert_row
IMPORTING iv_index TYPE i
iv_meter_id TYPE {{p}}if_meter_reading=>ty_meter_id
iv_opening TYPE {{p}}if_meter_reading=>ty_value
iv_closing TYPE {{p}}if_meter_reading=>ty_value
iv_consumption TYPE {{p}}if_meter_reading=>ty_value
it_result TYPE {{p}}if_meter_reading=>tt_result.
METHODS empty_input FOR TESTING.
METHODS single_reading FOR TESTING.
METHODS two_readings FOR TESTING.
METHODS negative_ignored FOR TESTING.
METHODS only_negative FOR TESTING.
METHODS zero_reading FOR TESTING.
METHODS duplicate_date FOR TESTING.
METHODS sorted_by_meter FOR TESTING.
METHODS rollover FOR TESTING.
METHODS date_order FOR TESTING.
METHODS several_meters FOR TESTING.
ENDCLASS.
CLASS {{p}}t02_hidden IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}meter_consumption( ).
ENDMETHOD.
METHOD assert_row.
DATA(ls_row) = it_result[ iv_index ].
cl_abap_unit_assert=>assert_equals( exp = iv_meter_id act = ls_row-meter_id msg = 'meter id' ).
cl_abap_unit_assert=>assert_equals( exp = iv_opening act = ls_row-opening_value msg = 'opening' ).
cl_abap_unit_assert=>assert_equals( exp = iv_closing act = ls_row-closing_value msg = 'closing' ).
cl_abap_unit_assert=>assert_equals( exp = iv_consumption act = ls_row-consumption msg = 'consumption' ).
ENDMETHOD.
METHOD empty_input.
DATA lt_readings TYPE {{p}}if_meter_reading=>tt_readings.
DATA(lt_result) = mo_cut->calculate( lt_readings ).
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_result ) ).
ENDMETHOD.
METHOD single_reading.
DATA lt_readings TYPE {{p}}if_meter_reading=>tt_readings.
lt_readings = VALUE #( ( meter_id = 'M0001' reading_date = '20240110' reading_value = 100 ) ).
DATA(lt_result) = mo_cut->calculate( lt_readings ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
assert_row( iv_index = 1 iv_meter_id = 'M0001' iv_opening = 100 iv_closing = 100
iv_consumption = 0 it_result = lt_result ).
ENDMETHOD.
METHOD two_readings.
DATA lt_readings TYPE {{p}}if_meter_reading=>tt_readings.
lt_readings = VALUE #( ( meter_id = 'M0001' reading_date = '20240110' reading_value = 100 )
( meter_id = 'M0001' reading_date = '20240210' reading_value = 175 ) ).
DATA(lt_result) = mo_cut->calculate( lt_readings ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
assert_row( iv_index = 1 iv_meter_id = 'M0001' iv_opening = 100 iv_closing = 175
iv_consumption = 75 it_result = lt_result ).
ENDMETHOD.
METHOD negative_ignored.
DATA lt_readings TYPE {{p}}if_meter_reading=>tt_readings.
lt_readings = VALUE #( ( meter_id = 'M0001' reading_date = '20240110' reading_value = 100 )
( meter_id = 'M0001' reading_date = '20240115' reading_value = -3 )
( meter_id = 'M0001' reading_date = '20240210' reading_value = 200 ) ).
DATA(lt_result) = mo_cut->calculate( lt_readings ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
assert_row( iv_index = 1 iv_meter_id = 'M0001' iv_opening = 100 iv_closing = 200
iv_consumption = 100 it_result = lt_result ).
ENDMETHOD.
METHOD only_negative.
DATA lt_readings TYPE {{p}}if_meter_reading=>tt_readings.
lt_readings = VALUE #( ( meter_id = 'M0001' reading_date = '20240110' reading_value = -1 )
( meter_id = 'M0002' reading_date = '20240110' reading_value = -5 ) ).
DATA(lt_result) = mo_cut->calculate( lt_readings ).
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_result ) ).
ENDMETHOD.
METHOD zero_reading.
DATA lt_readings TYPE {{p}}if_meter_reading=>tt_readings.
lt_readings = VALUE #( ( meter_id = 'M0001' reading_date = '20240110' reading_value = 0 )
( meter_id = 'M0001' reading_date = '20240210' reading_value = 50 ) ).
DATA(lt_result) = mo_cut->calculate( lt_readings ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
assert_row( iv_index = 1 iv_meter_id = 'M0001' iv_opening = 0 iv_closing = 50
iv_consumption = 50 it_result = lt_result ).
ENDMETHOD.
METHOD duplicate_date.
DATA lt_readings TYPE {{p}}if_meter_reading=>tt_readings.
lt_readings = VALUE #( ( meter_id = 'M0001' reading_date = '20240110' reading_value = 120 )
( meter_id = 'M0001' reading_date = '20240110' reading_value = 100 )
( meter_id = 'M0001' reading_date = '20240210' reading_value = 180 )
( meter_id = 'M0001' reading_date = '20240210' reading_value = 200 ) ).
DATA(lt_result) = mo_cut->calculate( lt_readings ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
assert_row( iv_index = 1 iv_meter_id = 'M0001' iv_opening = 120 iv_closing = 200
iv_consumption = 80 it_result = lt_result ).
ENDMETHOD.
METHOD sorted_by_meter.
DATA lt_readings TYPE {{p}}if_meter_reading=>tt_readings.
lt_readings = VALUE #( ( meter_id = 'M0003' reading_date = '20240110' reading_value = 30 )
( meter_id = 'M0001' reading_date = '20240110' reading_value = 10 )
( meter_id = 'M0002' reading_date = '20240110' reading_value = 20 ) ).
DATA(lt_result) = mo_cut->calculate( lt_readings ).
cl_abap_unit_assert=>assert_equals( exp = 3 act = lines( lt_result ) ).
cl_abap_unit_assert=>assert_equals( exp = 'M0001' act = lt_result[ 1 ]-meter_id ).
cl_abap_unit_assert=>assert_equals( exp = 'M0002' act = lt_result[ 2 ]-meter_id ).
cl_abap_unit_assert=>assert_equals( exp = 'M0003' act = lt_result[ 3 ]-meter_id ).
ENDMETHOD.
METHOD rollover.
DATA lt_readings TYPE {{p}}if_meter_reading=>tt_readings.
lt_readings = VALUE #( ( meter_id = 'M0001' reading_date = '20240110' reading_value = 500 )
( meter_id = 'M0001' reading_date = '20240210' reading_value = 300 ) ).
DATA(lt_result) = mo_cut->calculate( lt_readings ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
assert_row( iv_index = 1 iv_meter_id = 'M0001' iv_opening = 500 iv_closing = 300
iv_consumption = 0 it_result = lt_result ).
ENDMETHOD.
METHOD date_order.
DATA lt_readings TYPE {{p}}if_meter_reading=>tt_readings.
lt_readings = VALUE #( ( meter_id = 'M0001' reading_date = '20240210' reading_value = 200 )
( meter_id = 'M0001' reading_date = '20240110' reading_value = 100 ) ).
DATA(lt_result) = mo_cut->calculate( lt_readings ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
assert_row( iv_index = 1 iv_meter_id = 'M0001' iv_opening = 100 iv_closing = 200
iv_consumption = 100 it_result = lt_result ).
ENDMETHOD.
METHOD several_meters.
DATA lt_readings TYPE {{p}}if_meter_reading=>tt_readings.
lt_readings = VALUE #( ( meter_id = 'M0001' reading_date = '20240110' reading_value = 100 )
( meter_id = 'M0001' reading_date = '20240310' reading_value = 250 )
( meter_id = 'M0002' reading_date = '20240105' reading_value = 40 )
( meter_id = 'M0002' reading_date = '20240205' reading_value = 55 ) ).
DATA(lt_result) = mo_cut->calculate( lt_readings ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_result ) ).
assert_row( iv_index = 1 iv_meter_id = 'M0001' iv_opening = 100 iv_closing = 250
iv_consumption = 150 it_result = lt_result ).
assert_row( iv_index = 2 iv_meter_id = 'M0002' iv_opening = 40 iv_closing = 55
iv_consumption = 15 it_result = lt_result ).
ENDMETHOD.
ENDCLASS.