Snapshot: new training tasks (balanced generation), docs
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
179
tasks_gen/train/G1916/hidden/solar_check_hidden.clas.abap
Normal file
179
tasks_gen/train/G1916/hidden/solar_check_hidden.clas.abap
Normal 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.
|
||||
Reference in New Issue
Block a user