Snapshot: new training tasks (balanced generation), docs
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
19
tasks_gen/train/G1910/faulty/m0_cider.tabl.asabap
Normal file
19
tasks_gen/train/G1910/faulty/m0_cider.tabl.asabap
Normal file
@@ -0,0 +1,19 @@
|
||||
@EndUserText.label : 'Cider pressing batch'
|
||||
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
|
||||
@AbapCatalog.tableCategory : #TRANSPARENT
|
||||
@AbapCatalog.deliveryClass : #A
|
||||
@AbapCatalog.dataMaintenance : #RESTRICTED
|
||||
define table {{p}}cider {
|
||||
key client : abap.clnt not null;
|
||||
batch_id : abap.char(10) not null;
|
||||
orchard_id : abap.char(6) not null;
|
||||
apple_variety : abap.char(20);
|
||||
pressed_on : abap.dats;
|
||||
bin_count : abap.int4;
|
||||
apple_kg : abap.dec(13,3);
|
||||
juice_l : abap.dec(13,3);
|
||||
@Semantics.amount.currencyCode : '{{p}}cider.currency_code'
|
||||
press_fee : abap.curr(15,2);
|
||||
currency_code : abap.cuky;
|
||||
grade : abap.char(2);
|
||||
}
|
||||
19
tasks_gen/train/G1910/faulty/m1_cider.tabl.asabap
Normal file
19
tasks_gen/train/G1910/faulty/m1_cider.tabl.asabap
Normal file
@@ -0,0 +1,19 @@
|
||||
@EndUserText.label : 'Cider pressing batch'
|
||||
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
|
||||
@AbapCatalog.tableCategory : #TRANSPARENT
|
||||
@AbapCatalog.deliveryClass : #A
|
||||
@AbapCatalog.dataMaintenance : #RESTRICTED
|
||||
define table {{p}}cider {
|
||||
key client : abap.clnt not null;
|
||||
key batch_id : abap.char(10) not null;
|
||||
orchard_id : abap.numc(6) not null;
|
||||
apple_variety : abap.char(20);
|
||||
pressed_on : abap.dats;
|
||||
bin_count : abap.int4;
|
||||
apple_kg : abap.dec(13,3);
|
||||
juice_l : abap.dec(13,3);
|
||||
@Semantics.amount.currencyCode : '{{p}}cider.currency_code'
|
||||
press_fee : abap.curr(15,2);
|
||||
currency_code : abap.cuky;
|
||||
grade : abap.char(2);
|
||||
}
|
||||
19
tasks_gen/train/G1910/faulty/m2_cider.tabl.asabap
Normal file
19
tasks_gen/train/G1910/faulty/m2_cider.tabl.asabap
Normal file
@@ -0,0 +1,19 @@
|
||||
@EndUserText.label : 'Cider pressing batch'
|
||||
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
|
||||
@AbapCatalog.tableCategory : #TRANSPARENT
|
||||
@AbapCatalog.deliveryClass : #A
|
||||
@AbapCatalog.dataMaintenance : #RESTRICTED
|
||||
define table {{p}}cider {
|
||||
key client : abap.clnt not null;
|
||||
key batch_id : abap.char(10) not null;
|
||||
orchard_id : abap.char(5) not null;
|
||||
apple_variety : abap.char(20);
|
||||
pressed_on : abap.dats;
|
||||
bin_count : abap.int4;
|
||||
apple_kg : abap.dec(13,3);
|
||||
juice_l : abap.dec(13,3);
|
||||
@Semantics.amount.currencyCode : '{{p}}cider.currency_code'
|
||||
press_fee : abap.curr(15,2);
|
||||
currency_code : abap.cuky;
|
||||
grade : abap.char(2);
|
||||
}
|
||||
19
tasks_gen/train/G1910/faulty/m3_cider.tabl.asabap
Normal file
19
tasks_gen/train/G1910/faulty/m3_cider.tabl.asabap
Normal file
@@ -0,0 +1,19 @@
|
||||
@EndUserText.label : 'Cider pressing batch'
|
||||
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
|
||||
@AbapCatalog.tableCategory : #TRANSPARENT
|
||||
@AbapCatalog.deliveryClass : #A
|
||||
@AbapCatalog.dataMaintenance : #RESTRICTED
|
||||
define table {{p}}cider {
|
||||
key client : abap.clnt not null;
|
||||
key batch_id : abap.char(10) not null;
|
||||
orchard_id : abap.char(6) not null;
|
||||
apple_variety : abap.char(19);
|
||||
pressed_on : abap.dats;
|
||||
bin_count : abap.int4;
|
||||
apple_kg : abap.dec(13,3);
|
||||
juice_l : abap.dec(13,3);
|
||||
@Semantics.amount.currencyCode : '{{p}}cider.currency_code'
|
||||
press_fee : abap.curr(15,2);
|
||||
currency_code : abap.cuky;
|
||||
grade : abap.char(2);
|
||||
}
|
||||
19
tasks_gen/train/G1910/faulty/m4_cider.tabl.asabap
Normal file
19
tasks_gen/train/G1910/faulty/m4_cider.tabl.asabap
Normal file
@@ -0,0 +1,19 @@
|
||||
@EndUserText.label : 'Cider pressing batch'
|
||||
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
|
||||
@AbapCatalog.tableCategory : #TRANSPARENT
|
||||
@AbapCatalog.deliveryClass : #A
|
||||
@AbapCatalog.dataMaintenance : #RESTRICTED
|
||||
define table {{p}}cider {
|
||||
key client : abap.clnt not null;
|
||||
key batch_id : abap.char(10) not null;
|
||||
orchard_id : abap.char(6) not null;
|
||||
apple_variety : abap.char(20);
|
||||
pressed_on : abap.dats;
|
||||
bin_count : abap.int4;
|
||||
apple_kg : abap.dec(13,3);
|
||||
juice_l : abap.dec(13,3);
|
||||
@Semantics.amount.currencyCode : '{{p}}cider.currency_code'
|
||||
press_fee : abap.curr(15,3);
|
||||
currency_code : abap.cuky;
|
||||
grade : abap.char(2);
|
||||
}
|
||||
19
tasks_gen/train/G1910/generation.json
Normal file
19
tasks_gen/train/G1910/generation.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"id": "G1910",
|
||||
"pool": "train",
|
||||
"object_type": "TABL",
|
||||
"category": "B",
|
||||
"attempts": [
|
||||
{
|
||||
"stage": "validate",
|
||||
"oracle": 100.0,
|
||||
"null": 0,
|
||||
"mutation": {
|
||||
"valid": 5,
|
||||
"killed": 5,
|
||||
"ok": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"accepted": true
|
||||
}
|
||||
157
tasks_gen/train/G1910/hidden/cider_hidden.clas.abap
Normal file
157
tasks_gen/train/G1910/hidden/cider_hidden.clas.abap
Normal file
@@ -0,0 +1,157 @@
|
||||
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.
|
||||
56
tasks_gen/train/G1910/mutation.json
Normal file
56
tasks_gen/train/G1910/mutation.json
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"task": "G1910",
|
||||
"mutants": [
|
||||
{
|
||||
"object": "{{P}}CIDER",
|
||||
"mutant": "line 8: key batch_id : -> batch_id : (key)",
|
||||
"status": "killed",
|
||||
"hidden": "6/8",
|
||||
"failed_tests": [
|
||||
"INSERT_AND_READ",
|
||||
"KEY_FIELDS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}CIDER",
|
||||
"mutant": "line 9: abap.char(6) -> abap.numc(6) (type)",
|
||||
"status": "killed",
|
||||
"hidden": "7/8",
|
||||
"failed_tests": [
|
||||
"INSERT_AND_READ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}CIDER",
|
||||
"mutant": "line 9: abap.char(6) -> abap.char(5) (length)",
|
||||
"status": "killed",
|
||||
"hidden": "6/8",
|
||||
"failed_tests": [
|
||||
"CHAR_LENGTHS",
|
||||
"INSERT_AND_READ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}CIDER",
|
||||
"mutant": "line 10: abap.char(20) -> abap.char(19) (length)",
|
||||
"status": "killed",
|
||||
"hidden": "7/8",
|
||||
"failed_tests": [
|
||||
"CHAR_LENGTHS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}CIDER",
|
||||
"mutant": "line 16: abap.curr(15,2) -> abap.curr(15,3) (decimals)",
|
||||
"status": "killed",
|
||||
"hidden": "7/8",
|
||||
"failed_tests": [
|
||||
"DECIMALS"
|
||||
]
|
||||
}
|
||||
],
|
||||
"valid": 5,
|
||||
"killed": 5,
|
||||
"kill_rate": 1.0,
|
||||
"ok": true
|
||||
}
|
||||
19
tasks_gen/train/G1910/reference/cider.tabl.asabap
Normal file
19
tasks_gen/train/G1910/reference/cider.tabl.asabap
Normal file
@@ -0,0 +1,19 @@
|
||||
@EndUserText.label : 'Cider pressing batch'
|
||||
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
|
||||
@AbapCatalog.tableCategory : #TRANSPARENT
|
||||
@AbapCatalog.deliveryClass : #A
|
||||
@AbapCatalog.dataMaintenance : #RESTRICTED
|
||||
define table {{p}}cider {
|
||||
key client : abap.clnt not null;
|
||||
key batch_id : abap.char(10) not null;
|
||||
orchard_id : abap.char(6) not null;
|
||||
apple_variety : abap.char(20);
|
||||
pressed_on : abap.dats;
|
||||
bin_count : abap.int4;
|
||||
apple_kg : abap.dec(13,3);
|
||||
juice_l : abap.dec(13,3);
|
||||
@Semantics.amount.currencyCode : '{{p}}cider.currency_code'
|
||||
press_fee : abap.curr(15,2);
|
||||
currency_code : abap.cuky;
|
||||
grade : abap.char(2);
|
||||
}
|
||||
58
tasks_gen/train/G1910/reference/cider_test.clas.abap
Normal file
58
tasks_gen/train/G1910/reference/cider_test.clas.abap
Normal file
@@ -0,0 +1,58 @@
|
||||
CLASS {{p}}cider_test 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 stores_batch FOR TESTING.
|
||||
METHODS rejects_duplicate FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}cider_test 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 stores_batch.
|
||||
DATA ls_batch TYPE {{p}}cider.
|
||||
ls_batch-batch_id = 'B000000001'.
|
||||
ls_batch-orchard_id = 'OR0001'.
|
||||
ls_batch-apple_kg = '480.500'.
|
||||
ls_batch-press_fee = '125.50'.
|
||||
ls_batch-currency_code = 'EUR'.
|
||||
|
||||
INSERT {{p}}cider FROM @ls_batch.
|
||||
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
|
||||
|
||||
SELECT SINGLE orchard_id, apple_kg FROM {{p}}cider
|
||||
WHERE batch_id = 'B000000001'
|
||||
INTO @DATA(ls_read).
|
||||
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 'OR0001' act = ls_read-orchard_id ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV decfloat34( '480.5' ) act = CONV decfloat34( ls_read-apple_kg ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_duplicate.
|
||||
DATA ls_batch TYPE {{p}}cider.
|
||||
ls_batch-batch_id = 'B000000002'.
|
||||
|
||||
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.
|
||||
51
tasks_gen/train/G1910/spec.md
Normal file
51
tasks_gen/train/G1910/spec.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# 1. Goal
|
||||
The cider press house of a fruit cooperative records each pressing batch of
|
||||
apple deliveries. Create the database table that stores these batches. A press
|
||||
terminal writes the batches and a reporting tool reads them. The field names,
|
||||
the data types and the key must be exactly as agreed.
|
||||
|
||||
# 2. Open questions
|
||||
None.
|
||||
|
||||
# 3. Context
|
||||
- The table is in package $TMP.
|
||||
- The press house receives apples from the member orchards.
|
||||
- One pressing batch comes from one orchard.
|
||||
- The press house charges a fee for each pressing. The fee is money.
|
||||
|
||||
# 4. Contract
|
||||
- Create the transparent database table {{P}}CIDER in package $TMP as a DDL
|
||||
source.
|
||||
- The table has these fields, with these names: CLIENT, BATCH_ID, ORCHARD_ID,
|
||||
APPLE_VARIETY, PRESSED_ON, BIN_COUNT, APPLE_KG, JUICE_L, PRESS_FEE,
|
||||
CURRENCY_CODE, GRADE.
|
||||
- The table has no other fields.
|
||||
- The key of the table is CLIENT and BATCH_ID.
|
||||
|
||||
# 5. Business rules
|
||||
1. CLIENT is the client field of the table (CLNT, 3 characters). It is a key
|
||||
field. It is not null.
|
||||
2. BATCH_ID is the number of the pressing batch (CHAR 10). It is a key field.
|
||||
It is not null.
|
||||
3. ORCHARD_ID is the number of the orchard that delivered the apples (CHAR 6).
|
||||
It is not null.
|
||||
4. APPLE_VARIETY is the name of the apple variety (CHAR 20).
|
||||
5. PRESSED_ON is the date of the pressing (DATS, 8 characters).
|
||||
6. BIN_COUNT is the number of apple bins of the batch (INT4).
|
||||
7. APPLE_KG is the weight of the apples in kilograms (DEC 13,3).
|
||||
8. JUICE_L is the volume of the juice in litres (DEC 13,3).
|
||||
9. PRESS_FEE is the fee of the pressing (CURR 15,2). It is an amount in the
|
||||
currency that CURRENCY_CODE gives.
|
||||
10. CURRENCY_CODE is the currency key (CUKY, 5 characters).
|
||||
11. GRADE is the quality grade of the juice (CHAR 2).
|
||||
|
||||
# 6. Constraints
|
||||
- Release target: 8.16 (SAP_BASIS 816).
|
||||
- Coding standards: Clean ABAP.
|
||||
- Out of scope: do not create other tables, views, classes or programs. Create
|
||||
only the table and your own test class.
|
||||
|
||||
# 7. Acceptance
|
||||
- The table is active and has no syntax error.
|
||||
- The hidden tests pass.
|
||||
- Write ABAP Unit tests with CL_OSQL_TEST_ENVIRONMENT in a global test class.
|
||||
56
tasks_gen/train/G1910/task.json
Normal file
56
tasks_gen/train/G1910/task.json
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"id": "G1910",
|
||||
"category": "B",
|
||||
"object_type": "TABL",
|
||||
"difficulty": 2,
|
||||
"release_target": "v816",
|
||||
"expected_outcome": "implement",
|
||||
"budget": {
|
||||
"max_tool_calls": 60,
|
||||
"max_activations": 15
|
||||
},
|
||||
"seed": [],
|
||||
"contract": [
|
||||
{
|
||||
"type": "TABL",
|
||||
"name": "{{P}}CIDER",
|
||||
"fields": [
|
||||
"client",
|
||||
"batch_id",
|
||||
"orchard_id",
|
||||
"apple_variety",
|
||||
"pressed_on",
|
||||
"bin_count",
|
||||
"apple_kg",
|
||||
"juice_l",
|
||||
"press_fee",
|
||||
"currency_code",
|
||||
"grade"
|
||||
]
|
||||
}
|
||||
],
|
||||
"out_of_scope": [],
|
||||
"hidden_tests": [
|
||||
{
|
||||
"type": "CLAS",
|
||||
"name": "{{P}}CIDER_HIDDEN",
|
||||
"file": "hidden/cider_hidden.clas.abap",
|
||||
"description": "Hidden tests for the cider pressing batch table"
|
||||
}
|
||||
],
|
||||
"reference": [
|
||||
{
|
||||
"type": "TABL",
|
||||
"name": "{{P}}CIDER",
|
||||
"file": "reference/cider.tabl.asabap",
|
||||
"description": "Cider pressing batch table"
|
||||
},
|
||||
{
|
||||
"type": "CLAS",
|
||||
"name": "{{P}}CIDER_TEST",
|
||||
"file": "reference/cider_test.clas.abap",
|
||||
"description": "Own tests for the table"
|
||||
}
|
||||
],
|
||||
"craft_checks": []
|
||||
}
|
||||
Reference in New Issue
Block a user