Files
abap-llm/tasks_gen/train/G1943/hidden/game_stru_hidden.clas.abap
2026-10-05 22:08:59 +02:00

160 lines
5.9 KiB
ABAP

CLASS {{p}}game_stru_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
TYPES: BEGIN OF ty_comp,
name TYPE string,
type TYPE REF TO cl_abap_datadescr,
END OF ty_comp,
ty_comps TYPE STANDARD TABLE OF ty_comp WITH DEFAULT KEY.
CLASS-DATA go_line TYPE REF TO cl_abap_structdescr.
CLASS-METHODS class_setup.
CLASS-METHODS flat_components RETURNING VALUE(rt_comp) TYPE ty_comps.
METHODS structure_exists FOR TESTING.
METHODS field_count FOR TESTING.
METHODS field_names FOR TESTING.
METHODS text_lengths FOR TESTING.
METHODS numc_field FOR TESTING.
METHODS packed_decimals FOR TESTING.
METHODS type_kinds FOR TESTING.
METHODS stamp_structure FOR TESTING.
METHODS stamp_at_end FOR TESTING.
ENDCLASS.
CLASS {{p}}game_stru_hidden IMPLEMENTATION.
METHOD class_setup.
go_line = CAST cl_abap_structdescr(
cl_abap_typedescr=>describe_by_name( '{{P}}GAME_ROUND' ) ).
ENDMETHOD.
METHOD flat_components.
DATA(lt_comp) = go_line->get_components( ).
LOOP AT lt_comp INTO DATA(ls_comp).
TRY.
DATA(lo_sub) = CAST cl_abap_structdescr( ls_comp-type ).
DATA(lt_sub) = lo_sub->get_components( ).
LOOP AT lt_sub INTO DATA(ls_sub).
APPEND VALUE #( name = ls_sub-name type = ls_sub-type ) TO rt_comp.
ENDLOOP.
CATCH cx_sy_move_cast_error.
APPEND VALUE #( name = ls_comp-name type = ls_comp-type ) TO rt_comp.
ENDTRY.
ENDLOOP.
ENDMETHOD.
METHOD structure_exists.
cl_abap_unit_assert=>assert_equals(
exp = abap_true
act = contains( val = to_upper( go_line->absolute_name )
sub = `GAME_ROUND` ) ).
ENDMETHOD.
METHOD field_count.
DATA(lt_comp) = flat_components( ).
cl_abap_unit_assert=>assert_equals( exp = 10 act = lines( lt_comp ) ).
ENDMETHOD.
METHOD field_names.
DATA(lt_comp) = flat_components( ).
DATA(lt_exp) = VALUE string_table(
( `ROUND_ID` ) ( `PLAY_DATE` ) ( `FIELD_NO` ) ( `TEAM_NAME` )
( `PLAYER_COUNT` ) ( `PAINTBALLS` ) ( `ROUND_FEE` ) ( `REFEREE` )
( `LAST_EDITOR` ) ( `LAST_EDIT_ON` ) ).
cl_abap_unit_assert=>assert_equals( exp = lines( lt_exp ) act = lines( lt_comp ) ).
DATA(lv_index) = 0.
LOOP AT lt_comp INTO DATA(ls_comp).
lv_index = lv_index + 1.
cl_abap_unit_assert=>assert_equals(
exp = lt_exp[ lv_index ]
act = to_upper( ls_comp-name )
msg = |Field { lv_index }| ).
ENDLOOP.
ENDMETHOD.
METHOD text_lengths.
DATA(lt_comp) = flat_components( ).
LOOP AT lt_comp INTO DATA(ls_comp).
DATA(lo_elem) = CAST cl_abap_elemdescr( ls_comp-type ).
CASE to_upper( ls_comp-name ).
WHEN 'ROUND_ID'.
cl_abap_unit_assert=>assert_equals( exp = 20 act = lo_elem->length ).
WHEN 'TEAM_NAME'.
cl_abap_unit_assert=>assert_equals( exp = 40 act = lo_elem->length ).
WHEN 'REFEREE'.
cl_abap_unit_assert=>assert_equals( exp = 30 act = lo_elem->length ).
WHEN 'LAST_EDITOR'.
cl_abap_unit_assert=>assert_equals( exp = 24 act = lo_elem->length ).
ENDCASE.
ENDLOOP.
ENDMETHOD.
METHOD numc_field.
DATA(lt_comp) = flat_components( ).
LOOP AT lt_comp INTO DATA(ls_comp).
IF to_upper( ls_comp-name ) = 'FIELD_NO'.
DATA(lo_elem) = CAST cl_abap_elemdescr( ls_comp-type ).
cl_abap_unit_assert=>assert_equals(
exp = `N` act = CONV string( lo_elem->type_kind ) ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = lo_elem->length ).
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD packed_decimals.
DATA(lt_comp) = flat_components( ).
LOOP AT lt_comp INTO DATA(ls_comp).
IF to_upper( ls_comp-name ) = 'ROUND_FEE'.
DATA(lo_elem) = CAST cl_abap_elemdescr( ls_comp-type ).
cl_abap_unit_assert=>assert_equals(
exp = `P` act = CONV string( lo_elem->type_kind ) ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = lo_elem->decimals ).
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD type_kinds.
DATA(lt_comp) = flat_components( ).
DATA(lt_exp) = VALUE string_table(
( `C` ) ( `D` ) ( `N` ) ( `C` ) ( `I` ) ( `I` ) ( `P` ) ( `C` )
( `C` ) ( `D` ) ).
cl_abap_unit_assert=>assert_equals( exp = lines( lt_exp ) act = lines( lt_comp ) ).
DATA(lv_index) = 0.
LOOP AT lt_comp INTO DATA(ls_comp).
lv_index = lv_index + 1.
cl_abap_unit_assert=>assert_equals(
exp = lt_exp[ lv_index ]
act = CONV string( ls_comp-type->type_kind )
msg = |Type kind of field { lv_index }| ).
ENDLOOP.
ENDMETHOD.
METHOD stamp_structure.
DATA(lo_stamp) = CAST cl_abap_structdescr(
cl_abap_typedescr=>describe_by_name( '{{P}}EDIT_STAMP' ) ).
DATA(lt_comp) = lo_stamp->get_components( ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_comp ) ).
cl_abap_unit_assert=>assert_equals(
exp = `LAST_EDITOR` act = to_upper( lt_comp[ 1 ]-name ) ).
cl_abap_unit_assert=>assert_equals(
exp = `LAST_EDIT_ON` act = to_upper( lt_comp[ 2 ]-name ) ).
DATA(lo_editor) = CAST cl_abap_elemdescr( lt_comp[ 1 ]-type ).
cl_abap_unit_assert=>assert_equals( exp = 24 act = lo_editor->length ).
DATA(lo_edit_on) = CAST cl_abap_elemdescr( lt_comp[ 2 ]-type ).
cl_abap_unit_assert=>assert_equals(
exp = `D` act = CONV string( lo_edit_on->type_kind ) ).
ENDMETHOD.
METHOD stamp_at_end.
DATA(lt_comp) = flat_components( ).
DATA(lv_lines) = lines( lt_comp ).
cl_abap_unit_assert=>assert_equals( exp = 10 act = lv_lines ).
DATA(lv_index) = lv_lines - 1.
DATA(ls_editor) = lt_comp[ lv_index ].
cl_abap_unit_assert=>assert_equals(
exp = `LAST_EDITOR` act = to_upper( ls_editor-name ) ).
DATA(ls_edit_on) = lt_comp[ lv_lines ].
cl_abap_unit_assert=>assert_equals(
exp = `LAST_EDIT_ON` act = to_upper( ls_edit_on-name ) ).
ENDMETHOD.
ENDCLASS.