Files
abap-llm/tasks_gen/train/G1001/hidden/harvest_hidden.clas.abap

194 lines
9.2 KiB
ABAP

CLASS {{p}}harvest_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA mo_cut TYPE REF TO {{p}}harvest_evaluator.
METHODS setup.
METHODS assert_rows
IMPORTING it_act TYPE {{p}}if_harvest=>tt_result
it_exp TYPE {{p}}if_harvest=>tt_result
iv_msg TYPE string.
METHODS empty_input FOR TESTING.
METHODS unknown_member_ignored FOR TESTING.
METHODS zero_quantity_ignored FOR TESTING.
METHODS negative_quantity_ignored FOR TESTING.
METHODS same_member_counts_once FOR TESTING.
METHODS two_varieties_separated FOR TESTING.
METHODS sorted_by_total_desc FOR TESTING.
METHODS tie_broken_by_variety FOR TESTING.
METHODS all_reports_ignored FOR TESTING.
METHODS member_without_report FOR TESTING.
ENDCLASS.
CLASS {{p}}harvest_hidden IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}harvest_evaluator( ).
ENDMETHOD.
METHOD assert_rows.
cl_abap_unit_assert=>assert_equals( exp = lines( it_exp )
act = lines( it_act )
msg = |{ iv_msg }: number of rows| ).
LOOP AT it_exp ASSIGNING FIELD-SYMBOL(<ls_exp>).
READ TABLE it_act ASSIGNING FIELD-SYMBOL(<ls_act>) INDEX sy-tabix.
IF sy-subrc <> 0.
RETURN.
ENDIF.
cl_abap_unit_assert=>assert_equals( exp = <ls_exp>-variety
act = <ls_act>-variety
msg = |{ iv_msg }: variety| ).
cl_abap_unit_assert=>assert_equals( exp = <ls_exp>-total_kg
act = <ls_act>-total_kg
msg = |{ iv_msg }: total_kg| ).
cl_abap_unit_assert=>assert_equals( exp = <ls_exp>-member_count
act = <ls_act>-member_count
msg = |{ iv_msg }: member_count| ).
ENDLOOP.
ENDMETHOD.
METHOD empty_input.
DATA lt_report TYPE {{p}}if_harvest=>tt_report.
DATA lt_member TYPE {{p}}if_harvest=>tt_member.
DATA(lt_result) = mo_cut->evaluate( it_report = lt_report
it_member = lt_member ).
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_result ) ).
ENDMETHOD.
METHOD unknown_member_ignored.
DATA(lt_member) = VALUE {{p}}if_harvest=>tt_member(
( member_id = 'M00001' member_name = 'Hof Adler' )
( member_id = 'M00002' member_name = 'Hof Birke' ) ).
DATA(lt_report) = VALUE {{p}}if_harvest=>tt_report(
( member_id = 'M00001' variety = 'RIES' quantity_kg = 100 )
( member_id = 'M00009' variety = 'RIES' quantity_kg = 50 ) ).
DATA(lt_result) = mo_cut->evaluate( it_report = lt_report
it_member = lt_member ).
assert_rows( it_act = lt_result
it_exp = VALUE #( ( variety = 'RIES' total_kg = 100 member_count = 1 ) )
iv_msg = 'unknown member' ).
ENDMETHOD.
METHOD zero_quantity_ignored.
DATA(lt_member) = VALUE {{p}}if_harvest=>tt_member(
( member_id = 'M00001' member_name = 'Hof Adler' ) ).
DATA(lt_report) = VALUE {{p}}if_harvest=>tt_report(
( member_id = 'M00001' variety = 'RIES' quantity_kg = 0 )
( member_id = 'M00001' variety = 'RIES' quantity_kg = 30 ) ).
DATA(lt_result) = mo_cut->evaluate( it_report = lt_report
it_member = lt_member ).
assert_rows( it_act = lt_result
it_exp = VALUE #( ( variety = 'RIES' total_kg = 30 member_count = 1 ) )
iv_msg = 'zero quantity' ).
ENDMETHOD.
METHOD negative_quantity_ignored.
DATA(lt_member) = VALUE {{p}}if_harvest=>tt_member(
( member_id = 'M00001' member_name = 'Hof Adler' ) ).
DATA(lt_report) = VALUE {{p}}if_harvest=>tt_report(
( member_id = 'M00001' variety = 'RIES' quantity_kg = -5 )
( member_id = 'M00001' variety = 'RIES' quantity_kg = 20 ) ).
DATA(lt_result) = mo_cut->evaluate( it_report = lt_report
it_member = lt_member ).
assert_rows( it_act = lt_result
it_exp = VALUE #( ( variety = 'RIES' total_kg = 20 member_count = 1 ) )
iv_msg = 'negative quantity' ).
ENDMETHOD.
METHOD same_member_counts_once.
DATA(lt_member) = VALUE {{p}}if_harvest=>tt_member(
( member_id = 'M00001' member_name = 'Hof Adler' )
( member_id = 'M00002' member_name = 'Hof Birke' ) ).
DATA(lt_report) = VALUE {{p}}if_harvest=>tt_report(
( member_id = 'M00001' variety = 'RIES' quantity_kg = 10 )
( member_id = 'M00001' variety = 'RIES' quantity_kg = 20 )
( member_id = 'M00002' variety = 'RIES' quantity_kg = 5 ) ).
DATA(lt_result) = mo_cut->evaluate( it_report = lt_report
it_member = lt_member ).
assert_rows( it_act = lt_result
it_exp = VALUE #( ( variety = 'RIES' total_kg = 35 member_count = 2 ) )
iv_msg = 'same member' ).
ENDMETHOD.
METHOD two_varieties_separated.
DATA(lt_member) = VALUE {{p}}if_harvest=>tt_member(
( member_id = 'M00001' member_name = 'Hof Adler' )
( member_id = 'M00002' member_name = 'Hof Birke' ) ).
DATA(lt_report) = VALUE {{p}}if_harvest=>tt_report(
( member_id = 'M00001' variety = 'RIES' quantity_kg = 10 )
( member_id = 'M00002' variety = 'RIES' quantity_kg = 10 )
( member_id = 'M00001' variety = 'SPAE' quantity_kg = 7 ) ).
DATA(lt_result) = mo_cut->evaluate( it_report = lt_report
it_member = lt_member ).
assert_rows( it_act = lt_result
it_exp = VALUE #( ( variety = 'RIES' total_kg = 20 member_count = 2 )
( variety = 'SPAE' total_kg = 7 member_count = 1 ) )
iv_msg = 'two varieties' ).
ENDMETHOD.
METHOD sorted_by_total_desc.
DATA(lt_member) = VALUE {{p}}if_harvest=>tt_member(
( member_id = 'M00001' member_name = 'Hof Adler' )
( member_id = 'M00002' member_name = 'Hof Birke' )
( member_id = 'M00003' member_name = 'Hof Zeder' )
( member_id = 'M00004' member_name = 'Hof Eiche' ) ).
DATA(lt_report) = VALUE {{p}}if_harvest=>tt_report(
( member_id = 'M00001' variety = 'RIES' quantity_kg = 10 )
( member_id = 'M00002' variety = 'SPAE' quantity_kg = 30 )
( member_id = 'M00003' variety = 'SILV' quantity_kg = 20 )
( member_id = 'M00004' variety = 'SPAE' quantity_kg = 5 ) ).
DATA(lt_result) = mo_cut->evaluate( it_report = lt_report
it_member = lt_member ).
assert_rows( it_act = lt_result
it_exp = VALUE #( ( variety = 'SPAE' total_kg = 35 member_count = 2 )
( variety = 'SILV' total_kg = 20 member_count = 1 )
( variety = 'RIES' total_kg = 10 member_count = 1 ) )
iv_msg = 'sort by total' ).
ENDMETHOD.
METHOD tie_broken_by_variety.
DATA(lt_member) = VALUE {{p}}if_harvest=>tt_member(
( member_id = 'M00001' member_name = 'Hof Adler' )
( member_id = 'M00002' member_name = 'Hof Birke' )
( member_id = 'M00003' member_name = 'Hof Zeder' ) ).
DATA(lt_report) = VALUE {{p}}if_harvest=>tt_report(
( member_id = 'M00001' variety = 'SPAE' quantity_kg = 10 )
( member_id = 'M00002' variety = 'RIES' quantity_kg = 10 )
( member_id = 'M00003' variety = 'SILV' quantity_kg = 10 ) ).
DATA(lt_result) = mo_cut->evaluate( it_report = lt_report
it_member = lt_member ).
assert_rows( it_act = lt_result
it_exp = VALUE #( ( variety = 'RIES' total_kg = 10 member_count = 1 )
( variety = 'SILV' total_kg = 10 member_count = 1 )
( variety = 'SPAE' total_kg = 10 member_count = 1 ) )
iv_msg = 'tie by variety' ).
ENDMETHOD.
METHOD all_reports_ignored.
DATA(lt_member) = VALUE {{p}}if_harvest=>tt_member(
( member_id = 'M00001' member_name = 'Hof Adler' ) ).
DATA(lt_report) = VALUE {{p}}if_harvest=>tt_report(
( member_id = 'M00009' variety = 'RIES' quantity_kg = 10 )
( member_id = 'M00001' variety = 'RIES' quantity_kg = 0 )
( member_id = 'M00001' variety = 'SPAE' quantity_kg = -3 ) ).
DATA(lt_result) = mo_cut->evaluate( it_report = lt_report
it_member = lt_member ).
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_result ) ).
ENDMETHOD.
METHOD member_without_report.
DATA(lt_member) = VALUE {{p}}if_harvest=>tt_member(
( member_id = 'M00001' member_name = 'Hof Adler' )
( member_id = 'M00002' member_name = 'Hof Birke' ) ).
DATA(lt_report) = VALUE {{p}}if_harvest=>tt_report(
( member_id = 'M00001' variety = 'RIES' quantity_kg = 5 ) ).
DATA(lt_result) = mo_cut->evaluate( it_report = lt_report
it_member = lt_member ).
assert_rows( it_act = lt_result
it_exp = VALUE #( ( variety = 'RIES' total_kg = 5 member_count = 1 ) )
iv_msg = 'member without report' ).
ENDMETHOD.
ENDCLASS.