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

158 lines
6.7 KiB
ABAP

CLASS {{p}}cider_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
TYPES ty_name TYPE c LENGTH 30.
CLASS-DATA go_env TYPE REF TO if_osql_test_environment.
CLASS-METHODS class_setup.
CLASS-METHODS class_teardown.
METHODS setup.
METHODS field_of
IMPORTING iv_name TYPE ty_name
RETURNING VALUE(rs_field) TYPE dfies.
METHODS field_names FOR TESTING.
METHODS key_fields FOR TESTING.
METHODS not_null_fields FOR TESTING.
METHODS char_lengths FOR TESTING.
METHODS numeric_types FOR TESTING.
METHODS decimals FOR TESTING.
METHODS insert_and_read FOR TESTING.
METHODS duplicate_key FOR TESTING.
ENDCLASS.
CLASS {{p}}cider_hidden IMPLEMENTATION.
METHOD class_setup.
go_env = cl_osql_test_environment=>create(
i_dependency_list = VALUE #( ( '{{P}}CIDER' ) ) ).
ENDMETHOD.
METHOD class_teardown.
go_env->destroy( ).
ENDMETHOD.
METHOD setup.
go_env->clear_doubles( ).
ENDMETHOD.
METHOD field_of.
DATA(lo_struct) = CAST cl_abap_structdescr(
cl_abap_typedescr=>describe_by_name( '{{P}}CIDER' ) ).
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
msg = |Field { iv_name } is missing| ).
ENDMETHOD.
METHOD field_names.
DATA(lo_struct) = CAST cl_abap_structdescr(
cl_abap_typedescr=>describe_by_name( '{{P}}CIDER' ) ).
DATA(lt_fields) = lo_struct->get_ddic_field_list( ).
cl_abap_unit_assert=>assert_equals( exp = 11 act = lines( lt_fields ) ).
DATA lt_expected TYPE STANDARD TABLE OF ty_name WITH EMPTY KEY.
lt_expected = VALUE #(
( 'CLIENT' ) ( 'BATCH_ID' ) ( 'ORCHARD_ID' ) ( 'APPLE_VARIETY' )
( 'PRESSED_ON' ) ( 'BIN_COUNT' ) ( 'APPLE_KG' ) ( 'JUICE_L' )
( 'PRESS_FEE' ) ( 'CURRENCY_CODE' ) ( 'GRADE' ) ).
LOOP AT lt_expected INTO DATA(lv_name).
READ TABLE lt_fields TRANSPORTING NO FIELDS WITH KEY fieldname = lv_name.
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc
msg = |Field { lv_name } is missing| ).
ENDLOOP.
ENDMETHOD.
METHOD key_fields.
cl_abap_unit_assert=>assert_equals( exp = 'X' act = field_of( 'CLIENT' )-keyflag ).
cl_abap_unit_assert=>assert_equals( exp = 'X' act = field_of( 'BATCH_ID' )-keyflag ).
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_of( 'ORCHARD_ID' )-keyflag ).
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_of( 'PRESS_FEE' )-keyflag ).
ENDMETHOD.
METHOD not_null_fields.
DATA lt_expected TYPE STANDARD TABLE OF ty_name WITH EMPTY KEY.
lt_expected = VALUE #( ( 'CLIENT' ) ( 'BATCH_ID' ) ( 'ORCHARD_ID' ) ).
LOOP AT lt_expected INTO DATA(lv_name).
DATA(ls_field) = field_of( lv_name ).
ASSIGN COMPONENT 'NOT_NULL' OF STRUCTURE ls_field TO FIELD-SYMBOL(<lv_flag>).
IF sy-subrc = 0.
cl_abap_unit_assert=>assert_equals( exp = 'X' act = <lv_flag>
msg = |Field { lv_name } must be not null| ).
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD char_lengths.
cl_abap_unit_assert=>assert_equals( exp = 3 act = CONV i( field_of( 'CLIENT' )-leng ) ).
cl_abap_unit_assert=>assert_equals( exp = 10 act = CONV i( field_of( 'BATCH_ID' )-leng ) ).
cl_abap_unit_assert=>assert_equals( exp = 6 act = CONV i( field_of( 'ORCHARD_ID' )-leng ) ).
cl_abap_unit_assert=>assert_equals( exp = 20 act = CONV i( field_of( 'APPLE_VARIETY' )-leng ) ).
cl_abap_unit_assert=>assert_equals( exp = 5 act = CONV i( field_of( 'CURRENCY_CODE' )-leng ) ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = CONV i( field_of( 'GRADE' )-leng ) ).
ENDMETHOD.
METHOD numeric_types.
cl_abap_unit_assert=>assert_equals( exp = 'CLNT' act = field_of( 'CLIENT' )-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = field_of( 'BATCH_ID' )-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 'DATS' act = field_of( 'PRESSED_ON' )-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 'INT4' act = field_of( 'BIN_COUNT' )-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 'CURR' act = field_of( 'PRESS_FEE' )-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 'CUKY' act = field_of( 'CURRENCY_CODE' )-datatype ).
ENDMETHOD.
METHOD decimals.
cl_abap_unit_assert=>assert_equals( exp = 13 act = CONV i( field_of( 'APPLE_KG' )-leng ) ).
cl_abap_unit_assert=>assert_equals( exp = 3 act = CONV i( field_of( 'APPLE_KG' )-decimals ) ).
cl_abap_unit_assert=>assert_equals( exp = 13 act = CONV i( field_of( 'JUICE_L' )-leng ) ).
cl_abap_unit_assert=>assert_equals( exp = 3 act = CONV i( field_of( 'JUICE_L' )-decimals ) ).
cl_abap_unit_assert=>assert_equals( exp = 15 act = CONV i( field_of( 'PRESS_FEE' )-leng ) ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = CONV i( field_of( 'PRESS_FEE' )-decimals ) ).
ENDMETHOD.
METHOD insert_and_read.
DATA lt_batch TYPE STANDARD TABLE OF {{p}}cider WITH EMPTY KEY.
lt_batch = VALUE #(
( batch_id = 'B000000001' orchard_id = 'OR0001' apple_variety = 'ELSTAR'
pressed_on = '20250801' bin_count = 12 apple_kg = '480.500'
juice_l = '320.250' press_fee = '125.50' currency_code = 'EUR'
grade = 'A1' )
( batch_id = 'B000000002' orchard_id = 'OR0002' apple_variety = 'GALA'
pressed_on = '20250802' bin_count = 8 apple_kg = '310.000'
juice_l = '205.000' press_fee = '80.00' currency_code = 'EUR'
grade = 'B2' ) ).
INSERT {{p}}cider FROM TABLE @lt_batch.
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
SELECT SINGLE orchard_id, bin_count, apple_kg, press_fee, currency_code, grade
FROM {{p}}cider
WHERE batch_id = 'B000000001'
INTO @DATA(ls_row).
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
cl_abap_unit_assert=>assert_equals( exp = 'OR0001' act = ls_row-orchard_id ).
cl_abap_unit_assert=>assert_equals( exp = 12 act = ls_row-bin_count ).
cl_abap_unit_assert=>assert_equals(
exp = CONV decfloat34( '480.5' ) act = CONV decfloat34( ls_row-apple_kg ) ).
cl_abap_unit_assert=>assert_equals(
exp = CONV decfloat34( '125.50' ) act = CONV decfloat34( ls_row-press_fee ) ).
cl_abap_unit_assert=>assert_equals( exp = 'EUR' act = ls_row-currency_code ).
cl_abap_unit_assert=>assert_equals( exp = 'A1' act = ls_row-grade ).
ENDMETHOD.
METHOD duplicate_key.
DATA ls_batch TYPE {{p}}cider.
ls_batch-batch_id = 'B000000009'.
ls_batch-orchard_id = 'OR0009'.
INSERT {{p}}cider FROM @ls_batch.
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
INSERT {{p}}cider FROM @ls_batch.
cl_abap_unit_assert=>assert_equals( exp = 4 act = sy-subrc ).
ENDMETHOD.
ENDCLASS.