Snapshot: new training tasks (balanced generation), docs

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-05 22:08:59 +02:00
parent eb13453097
commit 6984fc7917
572 changed files with 30024 additions and 0 deletions

View File

@@ -0,0 +1,179 @@
CLASS {{p}}solar_check_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PUBLIC SECTION.
INTERFACES {{p}}if_solar_check.
PRIVATE SECTION.
METHODS assert_reason
IMPORTING iv_exp TYPE {{p}}if_solar_check=>ty_reason
iv_act TYPE {{p}}if_solar_check=>ty_reason.
METHODS assert_roof
IMPORTING iv_exp TYPE {{p}}if_solar_check=>ty_roof
iv_act TYPE {{p}}if_solar_check=>ty_roof.
METHODS reason_codes FOR TESTING.
METHODS roof_codes FOR TESTING.
METHODS limit_values FOR TESTING.
METHODS reason_length FOR TESTING.
METHODS roof_length FOR TESTING.
METHODS request_structure FOR TESTING.
METHODS request_table FOR TESTING.
METHODS reason_table FOR TESTING.
METHODS check_via_interface FOR TESTING.
METHODS check_many_via_interface FOR TESTING.
ENDCLASS.
CLASS {{p}}solar_check_hidden IMPLEMENTATION.
METHOD {{p}}if_solar_check~check.
rv_reason = {{p}}if_solar_check=>c_reason-ok.
IF is_request-panel_count < {{p}}if_solar_check=>c_min_panels.
rv_reason = {{p}}if_solar_check=>c_reason-panels.
ENDIF.
ENDMETHOD.
METHOD {{p}}if_solar_check~check_many.
DATA ls_request TYPE {{p}}if_solar_check=>ty_request.
LOOP AT it_request INTO ls_request.
IF ls_request-tilt_angle < 0.
APPEND {{p}}if_solar_check=>c_reason-tilt TO rt_reason.
ELSE.
APPEND {{p}}if_solar_check=>c_reason-ok TO rt_reason.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD assert_reason.
cl_abap_unit_assert=>assert_equals( exp = iv_exp act = iv_act ).
ENDMETHOD.
METHOD assert_roof.
cl_abap_unit_assert=>assert_equals( exp = iv_exp act = iv_act ).
ENDMETHOD.
METHOD reason_codes.
assert_reason( iv_exp = 'OK' iv_act = {{p}}if_solar_check=>c_reason-ok ).
assert_reason( iv_exp = 'EMPTY' iv_act = {{p}}if_solar_check=>c_reason-empty_input ).
assert_reason( iv_exp = 'ROOF' iv_act = {{p}}if_solar_check=>c_reason-roof_type ).
assert_reason( iv_exp = 'SIZE' iv_act = {{p}}if_solar_check=>c_reason-roof_size ).
assert_reason( iv_exp = 'PANELS' iv_act = {{p}}if_solar_check=>c_reason-panels ).
assert_reason( iv_exp = 'TILT' iv_act = {{p}}if_solar_check=>c_reason-tilt ).
assert_reason( iv_exp = 'BATTERY' iv_act = {{p}}if_solar_check=>c_reason-battery ).
ENDMETHOD.
METHOD roof_codes.
assert_roof( iv_exp = 'TILE' iv_act = {{p}}if_solar_check=>c_roof_tile ).
assert_roof( iv_exp = 'SLAT' iv_act = {{p}}if_solar_check=>c_roof_slate ).
assert_roof( iv_exp = 'FLAT' iv_act = {{p}}if_solar_check=>c_roof_flat ).
ENDMETHOD.
METHOD limit_values.
cl_abap_unit_assert=>assert_equals( exp = 4 act = {{p}}if_solar_check=>c_min_panels ).
cl_abap_unit_assert=>assert_equals( exp = 60 act = {{p}}if_solar_check=>c_max_panels ).
cl_abap_unit_assert=>assert_equals( exp = 5 act = {{p}}if_solar_check=>c_min_tilt ).
cl_abap_unit_assert=>assert_equals( exp = 60 act = {{p}}if_solar_check=>c_max_tilt ).
cl_abap_unit_assert=>assert_equals( exp = 20 act = {{p}}if_solar_check=>c_max_battery ).
ENDMETHOD.
METHOD reason_length.
DATA lv_reason TYPE {{p}}if_solar_check=>ty_reason.
DATA(lo_descr) = cl_abap_typedescr=>describe_by_data( lv_reason ).
cl_abap_unit_assert=>assert_equals( exp = 10 act = lo_descr->length ).
cl_abap_unit_assert=>assert_equals( exp = cl_abap_typedescr=>typekind_char
act = lo_descr->type_kind ).
ENDMETHOD.
METHOD roof_length.
DATA lv_roof TYPE {{p}}if_solar_check=>ty_roof.
DATA(lo_descr) = cl_abap_typedescr=>describe_by_data( lv_roof ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = lo_descr->length ).
cl_abap_unit_assert=>assert_equals( exp = cl_abap_typedescr=>typekind_char
act = lo_descr->type_kind ).
ENDMETHOD.
METHOD request_structure.
DATA ls_request TYPE {{p}}if_solar_check=>ty_request.
ls_request = VALUE #( roof_type = {{p}}if_solar_check=>c_roof_tile
roof_size = 80
panel_count = 20
tilt_angle = 30
battery_kwh = 10 ).
DATA(lo_descr) = cl_abap_typedescr=>describe_by_data( ls_request ).
DATA(lo_struct) = CAST cl_abap_structdescr( lo_descr ).
DATA(lt_comp) = lo_struct->get_components( ).
cl_abap_unit_assert=>assert_equals( exp = 5 act = lines( lt_comp ) ).
cl_abap_unit_assert=>assert_equals( exp = 'ROOF_TYPE' act = lt_comp[ 1 ]-name ).
cl_abap_unit_assert=>assert_equals( exp = 'ROOF_SIZE' act = lt_comp[ 2 ]-name ).
cl_abap_unit_assert=>assert_equals( exp = 'PANEL_COUNT' act = lt_comp[ 3 ]-name ).
cl_abap_unit_assert=>assert_equals( exp = 'TILT_ANGLE' act = lt_comp[ 4 ]-name ).
cl_abap_unit_assert=>assert_equals( exp = 'BATTERY_KWH' act = lt_comp[ 5 ]-name ).
cl_abap_unit_assert=>assert_equals( exp = cl_abap_typedescr=>typekind_char
act = lt_comp[ 1 ]-type_kind ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = lt_comp[ 1 ]-length ).
cl_abap_unit_assert=>assert_equals( exp = cl_abap_typedescr=>typekind_int
act = lt_comp[ 2 ]-type_kind ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = lt_comp[ 2 ]-length ).
cl_abap_unit_assert=>assert_equals( exp = cl_abap_typedescr=>typekind_int
act = lt_comp[ 3 ]-type_kind ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = lt_comp[ 3 ]-length ).
cl_abap_unit_assert=>assert_equals( exp = cl_abap_typedescr=>typekind_int
act = lt_comp[ 4 ]-type_kind ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = lt_comp[ 4 ]-length ).
cl_abap_unit_assert=>assert_equals( exp = cl_abap_typedescr=>typekind_int
act = lt_comp[ 5 ]-type_kind ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = lt_comp[ 5 ]-length ).
ENDMETHOD.
METHOD request_table.
DATA lv_kind TYPE c LENGTH 1.
DATA lt_request TYPE {{p}}if_solar_check=>tt_request.
lt_request = VALUE #( ( roof_type = {{p}}if_solar_check=>c_roof_flat
roof_size = 120
panel_count = 30
tilt_angle = 15
battery_kwh = 10 ) ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_request ) ).
DESCRIBE TABLE lt_request KIND lv_kind.
cl_abap_unit_assert=>assert_equals( exp = 'T' act = lv_kind ).
ENDMETHOD.
METHOD reason_table.
DATA lv_kind TYPE c LENGTH 1.
DATA lt_reason TYPE {{p}}if_solar_check=>tt_reason.
lt_reason = VALUE #( ( {{p}}if_solar_check=>c_reason-ok ) ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_reason ) ).
DESCRIBE TABLE lt_reason KIND lv_kind.
cl_abap_unit_assert=>assert_equals( exp = 'T' act = lv_kind ).
ENDMETHOD.
METHOD check_via_interface.
DATA lo_cut TYPE REF TO {{p}}if_solar_check.
DATA ls_request TYPE {{p}}if_solar_check=>ty_request.
lo_cut = me.
ls_request = VALUE #( roof_type = {{p}}if_solar_check=>c_roof_flat
roof_size = 120
panel_count = 30
tilt_angle = 15
battery_kwh = 10 ).
assert_reason( iv_exp = {{p}}if_solar_check=>c_reason-ok
iv_act = lo_cut->check( ls_request ) ).
ENDMETHOD.
METHOD check_many_via_interface.
DATA lo_cut TYPE REF TO {{p}}if_solar_check.
DATA lt_request TYPE {{p}}if_solar_check=>tt_request.
DATA lt_reason TYPE {{p}}if_solar_check=>tt_reason.
lo_cut = me.
lt_request = VALUE #( ( roof_type = {{p}}if_solar_check=>c_roof_tile
roof_size = 80
panel_count = 20
tilt_angle = 30
battery_kwh = 0 ) ).
lt_reason = lo_cut->check_many( lt_request ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_reason ) ).
assert_reason( iv_exp = {{p}}if_solar_check=>c_reason-ok
iv_act = lt_reason[ 1 ] ).
ENDMETHOD.
ENDCLASS.