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

196 lines
7.9 KiB
ABAP

CLASS {{p}}bowl_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
CLASS-DATA go_env TYPE REF TO if_osql_test_environment.
CLASS-METHODS class_setup.
CLASS-METHODS class_teardown.
METHODS setup.
METHODS field_names FOR TESTING.
METHODS key_fields FOR TESTING.
METHODS char_fields FOR TESTING.
METHODS numc_fields FOR TESTING.
METHODS decimal_fields FOR TESTING.
METHODS date_and_count FOR TESTING.
METHODS no_reserved_names FOR TESTING.
METHODS insert_and_read FOR TESTING.
METHODS duplicate_booking FOR TESTING.
METHODS get_field
IMPORTING iv_name TYPE string
RETURNING VALUE(rs_field) TYPE dfies.
ENDCLASS.
CLASS {{p}}bowl_hidden IMPLEMENTATION.
METHOD class_setup.
go_env = cl_osql_test_environment=>create( i_dependency_list = VALUE #( ( '{{P}}BOWL' ) ) ).
ENDMETHOD.
METHOD class_teardown.
go_env->destroy( ).
ENDMETHOD.
METHOD setup.
go_env->clear_doubles( ).
ENDMETHOD.
METHOD get_field.
DATA lo_struct TYPE REF TO cl_abap_structdescr.
lo_struct ?= cl_abap_typedescr=>describe_by_name( '{{P}}BOWL' ).
DATA(lt_fields) = lo_struct->get_ddic_field_list( ).
READ TABLE lt_fields INTO rs_field WITH KEY fieldname = iv_name.
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ).
ENDMETHOD.
METHOD field_names.
DATA lo_struct TYPE REF TO cl_abap_structdescr.
lo_struct ?= cl_abap_typedescr=>describe_by_name( '{{P}}BOWL' ).
DATA(lt_fields) = lo_struct->get_ddic_field_list( ).
cl_abap_unit_assert=>assert_equals( exp = 10 act = lines( lt_fields ) ).
DATA lt_names TYPE STANDARD TABLE OF string WITH EMPTY KEY.
lt_names = VALUE #( FOR ls_field IN lt_fields ( to_upper( ls_field-fieldname ) ) ).
DATA lt_expected TYPE STANDARD TABLE OF string WITH EMPTY KEY.
lt_expected = VALUE #( ( `CLIENT` ) ( `BOOKING_ID` ) ( `LANE_NO` ) ( `PLAY_HOURS` )
( `GAME_MODE` ) ( `ORDER_NO` ) ( `PLAY_DATE` )
( `PLAYER_COUNT` ) ( `LEAGUE_CODE` ) ( `PRICE_VALUE` ) ).
LOOP AT lt_expected INTO DATA(lv_name).
READ TABLE lt_names TRANSPORTING NO FIELDS WITH KEY table_line = lv_name.
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc
msg = |Field { lv_name } is missing| ).
ENDLOOP.
ENDMETHOD.
METHOD key_fields.
DATA lo_struct TYPE REF TO cl_abap_structdescr.
lo_struct ?= cl_abap_typedescr=>describe_by_name( '{{P}}BOWL' ).
DATA(lt_fields) = lo_struct->get_ddic_field_list( ).
LOOP AT lt_fields INTO DATA(ls_field).
DATA(lv_name) = to_upper( ls_field-fieldname ).
IF lv_name = 'CLIENT' OR lv_name = 'BOOKING_ID' OR lv_name = 'LANE_NO'.
cl_abap_unit_assert=>assert_equals( exp = 'X' act = ls_field-keyflag ).
ELSE.
cl_abap_unit_assert=>assert_equals( exp = ' ' act = ls_field-keyflag ).
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD char_fields.
DATA(ls_field) = get_field( 'BOOKING_ID' ).
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = ls_field-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 10 act = ls_field-leng ).
ls_field = get_field( 'ORDER_NO' ).
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = ls_field-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 10 act = ls_field-leng ).
ls_field = get_field( 'LEAGUE_CODE' ).
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = ls_field-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = ls_field-leng ).
ls_field = get_field( 'GAME_MODE' ).
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = ls_field-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = ls_field-leng ).
ENDMETHOD.
METHOD numc_fields.
DATA(ls_field) = get_field( 'LANE_NO' ).
cl_abap_unit_assert=>assert_equals( exp = 'NUMC' act = ls_field-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_field-leng ).
ENDMETHOD.
METHOD decimal_fields.
DATA(ls_field) = get_field( 'PLAY_HOURS' ).
cl_abap_unit_assert=>assert_equals( exp = 'DEC' act = ls_field-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = ls_field-leng ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_field-decimals ).
ls_field = get_field( 'PRICE_VALUE' ).
cl_abap_unit_assert=>assert_equals( exp = 'DEC' act = ls_field-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 11 act = ls_field-leng ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_field-decimals ).
ENDMETHOD.
METHOD date_and_count.
DATA(ls_field) = get_field( 'PLAY_DATE' ).
cl_abap_unit_assert=>assert_equals( exp = 'DATS' act = ls_field-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 8 act = ls_field-leng ).
ls_field = get_field( 'PLAYER_COUNT' ).
cl_abap_unit_assert=>assert_equals( exp = 'INT4' act = ls_field-datatype ).
ENDMETHOD.
METHOD no_reserved_names.
DATA lo_struct TYPE REF TO cl_abap_structdescr.
lo_struct ?= cl_abap_typedescr=>describe_by_name( '{{P}}BOWL' ).
DATA(lt_fields) = lo_struct->get_ddic_field_list( ).
DATA lt_reserved TYPE STANDARD TABLE OF string WITH EMPTY KEY.
lt_reserved = VALUE #( ( `HOURS` ) ( `MODE` ) ( `ORDER` ) ( `DATE` )
( `COUNT` ) ( `GROUP` ) ( `VALUE` ) ( `NUMBER` ) ).
LOOP AT lt_fields INTO DATA(ls_field).
DATA(lv_name) = to_upper( ls_field-fieldname ).
READ TABLE lt_reserved TRANSPORTING NO FIELDS WITH KEY table_line = lv_name.
cl_abap_unit_assert=>assert_subrc( exp = 4 act = sy-subrc
msg = |Field name { lv_name } is a reserved word| ).
ENDLOOP.
ENDMETHOD.
METHOD insert_and_read.
DATA lv_lane TYPE {{p}}bowl-lane_no.
DATA ls_booking TYPE {{p}}bowl.
ls_booking-client = sy-mandt.
ls_booking-booking_id = 'B-0001'.
ls_booking-lane_no = '01'.
ls_booking-play_hours = '12.50'.
ls_booking-game_mode = 'N'.
ls_booking-order_no = 'ORD-0001'.
ls_booking-play_date = '20240115'.
ls_booking-player_count = 4.
ls_booking-league_code = 'L-01'.
ls_booking-price_value = '1234.50'.
INSERT {{p}}bowl FROM @ls_booking.
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ).
SELECT SINGLE * FROM {{p}}bowl
WHERE booking_id = 'B-0001' AND lane_no = '01' INTO @DATA(ls_read).
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ).
lv_lane = '01'.
cl_abap_unit_assert=>assert_equals( exp = lv_lane act = ls_read-lane_no ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '12.50' )
act = CONV decfloat34( ls_read-play_hours ) ).
cl_abap_unit_assert=>assert_equals( exp = 'N' act = ls_read-game_mode ).
cl_abap_unit_assert=>assert_equals( exp = 'ORD-0001' act = ls_read-order_no ).
cl_abap_unit_assert=>assert_equals( exp = CONV d( '20240115' ) act = ls_read-play_date ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = ls_read-player_count ).
cl_abap_unit_assert=>assert_equals( exp = 'L-01' act = ls_read-league_code ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '1234.50' )
act = CONV decfloat34( ls_read-price_value ) ).
ENDMETHOD.
METHOD duplicate_booking.
DATA ls_booking TYPE {{p}}bowl.
ls_booking-client = sy-mandt.
ls_booking-booking_id = 'B-0002'.
ls_booking-lane_no = '02'.
ls_booking-game_mode = 'L'.
INSERT {{p}}bowl FROM @ls_booking.
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ).
ls_booking-game_mode = 'N'.
INSERT {{p}}bowl FROM @ls_booking.
cl_abap_unit_assert=>assert_equals( exp = 4 act = sy-subrc ).
SELECT SINGLE game_mode FROM {{p}}bowl
WHERE booking_id = 'B-0002' AND lane_no = '02' INTO @DATA(lv_mode).
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ).
cl_abap_unit_assert=>assert_equals( exp = 'L' act = lv_mode ).
ENDMETHOD.
ENDCLASS.