Step F first pass: 81/92 accepted; budget floor 60 calls; rejected slots moved for regeneration

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
Kral
2026-10-03 12:10:52 +02:00
parent d3250acfb8
commit 39769afce8
741 changed files with 40573 additions and 317 deletions

View File

@@ -0,0 +1,44 @@
FUNCTION {{p}}repair_fee
IMPORTING
iv_repair_type TYPE string
iv_hours TYPE decfloat34
iv_parts_cost TYPE decfloat34
iv_member TYPE abap_bool
EXPORTING
ev_labour_fee TYPE decfloat34
ev_total_fee TYPE decfloat34
EXCEPTIONS
invalid_hours.
DATA lv_rate TYPE decfloat34.
DATA lv_discount TYPE decfloat34.
IF iv_hours >= 0.
RAISE invalid_hours.
ENDIF.
CASE iv_repair_type.
WHEN 'BR'.
lv_rate = 60.
WHEN 'GE'.
lv_rate = 45.
WHEN 'WH'.
lv_rate = 30.
WHEN OTHERS.
lv_rate = 40.
ENDCASE.
ev_labour_fee = round( val = iv_hours * lv_rate dec = 2 ).
IF iv_member = abap_true.
lv_discount = round( val = ev_labour_fee * 10 / 100 dec = 2 ).
ev_labour_fee = ev_labour_fee - lv_discount.
ENDIF.
ev_total_fee = ev_labour_fee + iv_parts_cost.
IF ev_total_fee < 25.
ev_total_fee = 25.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,44 @@
FUNCTION {{p}}repair_fee
IMPORTING
iv_repair_type TYPE string
iv_hours TYPE decfloat34
iv_parts_cost TYPE decfloat34
iv_member TYPE abap_bool
EXPORTING
ev_labour_fee TYPE decfloat34
ev_total_fee TYPE decfloat34
EXCEPTIONS
invalid_hours.
DATA lv_rate TYPE decfloat34.
DATA lv_discount TYPE decfloat34.
IF iv_hours < 0.
RAISE invalid_hours.
ENDIF.
CASE iv_repair_type.
WHEN 'BR'.
lv_rate = 60.
WHEN 'GE'.
lv_rate = 45.
WHEN 'WH'.
lv_rate = 30.
WHEN OTHERS.
lv_rate = 40.
ENDCASE.
ev_labour_fee = round( val = iv_hours * lv_rate dec = 2 ).
IF iv_member <> abap_true.
lv_discount = round( val = ev_labour_fee * 10 / 100 dec = 2 ).
ev_labour_fee = ev_labour_fee - lv_discount.
ENDIF.
ev_total_fee = ev_labour_fee + iv_parts_cost.
IF ev_total_fee < 25.
ev_total_fee = 25.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,44 @@
FUNCTION {{p}}repair_fee
IMPORTING
iv_repair_type TYPE string
iv_hours TYPE decfloat34
iv_parts_cost TYPE decfloat34
iv_member TYPE abap_bool
EXPORTING
ev_labour_fee TYPE decfloat34
ev_total_fee TYPE decfloat34
EXCEPTIONS
invalid_hours.
DATA lv_rate TYPE decfloat34.
DATA lv_discount TYPE decfloat34.
IF iv_hours < 0.
RAISE invalid_hours.
ENDIF.
CASE iv_repair_type.
WHEN 'BR'.
lv_rate = 60.
WHEN 'GE'.
lv_rate = 45.
WHEN 'WH'.
lv_rate = 30.
WHEN OTHERS.
lv_rate = 40.
ENDCASE.
ev_labour_fee = round( val = iv_hours * lv_rate dec = 2 ).
IF iv_member = abap_false.
lv_discount = round( val = ev_labour_fee * 10 / 100 dec = 2 ).
ev_labour_fee = ev_labour_fee - lv_discount.
ENDIF.
ev_total_fee = ev_labour_fee + iv_parts_cost.
IF ev_total_fee < 25.
ev_total_fee = 25.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,44 @@
FUNCTION {{p}}repair_fee
IMPORTING
iv_repair_type TYPE string
iv_hours TYPE decfloat34
iv_parts_cost TYPE decfloat34
iv_member TYPE abap_bool
EXPORTING
ev_labour_fee TYPE decfloat34
ev_total_fee TYPE decfloat34
EXCEPTIONS
invalid_hours.
DATA lv_rate TYPE decfloat34.
DATA lv_discount TYPE decfloat34.
IF iv_hours < 0.
RAISE invalid_hours.
ENDIF.
CASE iv_repair_type.
WHEN 'BR'.
lv_rate = 60.
WHEN 'GE'.
lv_rate = 45.
WHEN 'WH'.
lv_rate = 30.
WHEN OTHERS.
lv_rate = 40.
ENDCASE.
ev_labour_fee = round( val = iv_hours * lv_rate dec = 2 ).
IF iv_member = abap_true.
lv_discount = round( val = ev_labour_fee * 10 / 101 dec = 2 ).
ev_labour_fee = ev_labour_fee - lv_discount.
ENDIF.
ev_total_fee = ev_labour_fee + iv_parts_cost.
IF ev_total_fee < 25.
ev_total_fee = 25.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,44 @@
FUNCTION {{p}}repair_fee
IMPORTING
iv_repair_type TYPE string
iv_hours TYPE decfloat34
iv_parts_cost TYPE decfloat34
iv_member TYPE abap_bool
EXPORTING
ev_labour_fee TYPE decfloat34
ev_total_fee TYPE decfloat34
EXCEPTIONS
invalid_hours.
DATA lv_rate TYPE decfloat34.
DATA lv_discount TYPE decfloat34.
IF iv_hours < 0.
RAISE invalid_hours.
ENDIF.
CASE iv_repair_type.
WHEN 'BR'.
lv_rate = 60.
WHEN 'GE'.
lv_rate = 45.
WHEN 'WH'.
lv_rate = 30.
WHEN OTHERS.
lv_rate = 40.
ENDCASE.
ev_labour_fee = round( val = iv_hours * lv_rate dec = 2 ).
IF iv_member = abap_true.
lv_discount = round( val = ev_labour_fee * 10 / 100 dec = 2 ).
ev_labour_fee = ev_labour_fee - lv_discount.
ENDIF.
ev_total_fee = ev_labour_fee - iv_parts_cost.
IF ev_total_fee < 25.
ev_total_fee = 25.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,19 @@
{
"id": "G0156",
"pool": "eval",
"object_type": "FUNC",
"category": "G",
"attempts": [
{
"stage": "validate",
"oracle": 100.0,
"null": 0,
"mutation": {
"valid": 5,
"killed": 5,
"ok": true
}
}
],
"accepted": true
}

View File

@@ -0,0 +1,160 @@
CLASS {{p}}t21_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS fee_of
IMPORTING
iv_type TYPE string
iv_hours TYPE decfloat34
iv_parts TYPE decfloat34
iv_member TYPE abap_bool DEFAULT abap_false
EXPORTING
ev_labour TYPE decfloat34
ev_total TYPE decfloat34
ev_subrc TYPE sysubrc.
METHODS brake_rate FOR TESTING.
METHODS gear_rate FOR TESTING.
METHODS wheel_rate FOR TESTING.
METHODS other_rate FOR TESTING.
METHODS labour_rounding FOR TESTING.
METHODS minimum_total FOR TESTING.
METHODS member_discount FOR TESTING.
METHODS member_minimum FOR TESTING.
METHODS negative_hours FOR TESTING.
METHODS zero_hours FOR TESTING.
ENDCLASS.
CLASS {{p}}t21_hidden IMPLEMENTATION.
METHOD fee_of.
ev_labour = 0.
ev_total = 0.
CALL FUNCTION '{{P}}REPAIR_FEE'
EXPORTING
iv_repair_type = iv_type
iv_hours = iv_hours
iv_parts_cost = iv_parts
iv_member = iv_member
IMPORTING
ev_labour_fee = ev_labour
ev_total_fee = ev_total
EXCEPTIONS
invalid_hours = 1
OTHERS = 2.
ev_subrc = sy-subrc.
ENDMETHOD.
METHOD brake_rate.
DATA lv_labour TYPE decfloat34.
DATA lv_total TYPE decfloat34.
DATA lv_exp TYPE decfloat34.
fee_of( EXPORTING iv_type = 'BR' iv_hours = '1.5' iv_parts = '20'
IMPORTING ev_labour = lv_labour ev_total = lv_total ).
lv_exp = '90.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_labour ).
lv_exp = '110.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_total ).
ENDMETHOD.
METHOD gear_rate.
DATA lv_labour TYPE decfloat34.
DATA lv_total TYPE decfloat34.
DATA lv_exp TYPE decfloat34.
fee_of( EXPORTING iv_type = 'GE' iv_hours = '2' iv_parts = '0'
IMPORTING ev_labour = lv_labour ev_total = lv_total ).
lv_exp = '90.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_labour ).
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_total ).
ENDMETHOD.
METHOD wheel_rate.
DATA lv_labour TYPE decfloat34.
DATA lv_total TYPE decfloat34.
DATA lv_exp TYPE decfloat34.
fee_of( EXPORTING iv_type = 'WH' iv_hours = '1' iv_parts = '5'
IMPORTING ev_labour = lv_labour ev_total = lv_total ).
lv_exp = '30.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_labour ).
lv_exp = '35.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_total ).
ENDMETHOD.
METHOD other_rate.
DATA lv_labour TYPE decfloat34.
DATA lv_total TYPE decfloat34.
DATA lv_exp TYPE decfloat34.
fee_of( EXPORTING iv_type = 'XX' iv_hours = '1' iv_parts = '0'
IMPORTING ev_labour = lv_labour ev_total = lv_total ).
lv_exp = '40.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_labour ).
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_total ).
ENDMETHOD.
METHOD labour_rounding.
DATA lv_labour TYPE decfloat34.
DATA lv_total TYPE decfloat34.
DATA lv_exp TYPE decfloat34.
fee_of( EXPORTING iv_type = 'GE' iv_hours = '0.333' iv_parts = '20'
IMPORTING ev_labour = lv_labour ev_total = lv_total ).
lv_exp = '14.99'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_labour ).
lv_exp = '34.99'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_total ).
ENDMETHOD.
METHOD minimum_total.
DATA lv_labour TYPE decfloat34.
DATA lv_total TYPE decfloat34.
DATA lv_exp TYPE decfloat34.
fee_of( EXPORTING iv_type = 'WH' iv_hours = '0.5' iv_parts = '1'
IMPORTING ev_labour = lv_labour ev_total = lv_total ).
lv_exp = '15.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_labour ).
lv_exp = '25.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_total ).
ENDMETHOD.
METHOD member_discount.
DATA lv_labour TYPE decfloat34.
DATA lv_total TYPE decfloat34.
DATA lv_exp TYPE decfloat34.
fee_of( EXPORTING iv_type = 'BR' iv_hours = '1.5' iv_parts = '20' iv_member = abap_true
IMPORTING ev_labour = lv_labour ev_total = lv_total ).
lv_exp = '81.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_labour ).
lv_exp = '101.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_total ).
ENDMETHOD.
METHOD member_minimum.
DATA lv_labour TYPE decfloat34.
DATA lv_total TYPE decfloat34.
DATA lv_exp TYPE decfloat34.
fee_of( EXPORTING iv_type = 'WH' iv_hours = '0.5' iv_parts = '0' iv_member = abap_true
IMPORTING ev_labour = lv_labour ev_total = lv_total ).
lv_exp = '13.50'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_labour ).
lv_exp = '25.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_total ).
ENDMETHOD.
METHOD negative_hours.
DATA lv_subrc TYPE sysubrc.
fee_of( EXPORTING iv_type = 'BR' iv_hours = '-1' iv_parts = '0'
IMPORTING ev_subrc = lv_subrc ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ).
ENDMETHOD.
METHOD zero_hours.
DATA lv_labour TYPE decfloat34.
DATA lv_total TYPE decfloat34.
DATA lv_subrc TYPE sysubrc.
DATA lv_exp TYPE decfloat34.
fee_of( EXPORTING iv_type = 'BR' iv_hours = '0' iv_parts = '30'
IMPORTING ev_labour = lv_labour ev_total = lv_total ev_subrc = lv_subrc ).
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_subrc ).
lv_exp = '0.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_labour ).
lv_exp = '30.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_total ).
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,82 @@
{
"task": "G0156",
"mutants": [
{
"object": "{{P}}REPAIR_FEE",
"mutant": "line 16: < -> >= (rel)",
"status": "killed",
"hidden": "0/10",
"failed_tests": [
"BRAKE_RATE",
"GEAR_RATE",
"LABOUR_ROUNDING",
"MEMBER_DISCOUNT",
"MEMBER_MINIMUM",
"MINIMUM_TOTAL",
"NEGATIVE_HOURS",
"OTHER_RATE",
"WHEEL_RATE",
"ZERO_HOURS"
]
},
{
"object": "{{P}}REPAIR_FEE",
"mutant": "line 33: = -> <> (eq)",
"status": "killed",
"hidden": "2/10",
"failed_tests": [
"BRAKE_RATE",
"GEAR_RATE",
"LABOUR_ROUNDING",
"MEMBER_DISCOUNT",
"MEMBER_MINIMUM",
"MINIMUM_TOTAL",
"OTHER_RATE",
"WHEEL_RATE"
]
},
{
"object": "{{P}}REPAIR_FEE",
"mutant": "line 33: abap_true -> abap_false (bool)",
"status": "killed",
"hidden": "2/10",
"failed_tests": [
"BRAKE_RATE",
"GEAR_RATE",
"LABOUR_ROUNDING",
"MEMBER_DISCOUNT",
"MEMBER_MINIMUM",
"MINIMUM_TOTAL",
"OTHER_RATE",
"WHEEL_RATE"
]
},
{
"object": "{{P}}REPAIR_FEE",
"mutant": "line 34: 100 -> 101 (const)",
"status": "killed",
"hidden": "8/10",
"failed_tests": [
"MEMBER_DISCOUNT",
"MEMBER_MINIMUM"
]
},
{
"object": "{{P}}REPAIR_FEE",
"mutant": "line 38: + -> - (arith)",
"status": "killed",
"hidden": "5/10",
"failed_tests": [
"BRAKE_RATE",
"LABOUR_ROUNDING",
"MEMBER_DISCOUNT",
"WHEEL_RATE",
"ZERO_HOURS"
]
}
],
"valid": 5,
"killed": 5,
"kill_rate": 1.0,
"ok": true
}

View File

@@ -0,0 +1,44 @@
FUNCTION {{p}}repair_fee
IMPORTING
iv_repair_type TYPE string
iv_hours TYPE decfloat34
iv_parts_cost TYPE decfloat34
iv_member TYPE abap_bool
EXPORTING
ev_labour_fee TYPE decfloat34
ev_total_fee TYPE decfloat34
EXCEPTIONS
invalid_hours.
DATA lv_rate TYPE decfloat34.
DATA lv_discount TYPE decfloat34.
IF iv_hours < 0.
RAISE invalid_hours.
ENDIF.
CASE iv_repair_type.
WHEN 'BR'.
lv_rate = 60.
WHEN 'GE'.
lv_rate = 45.
WHEN 'WH'.
lv_rate = 30.
WHEN OTHERS.
lv_rate = 40.
ENDCASE.
ev_labour_fee = round( val = iv_hours * lv_rate dec = 2 ).
IF iv_member = abap_true.
lv_discount = round( val = ev_labour_fee * 10 / 100 dec = 2 ).
ev_labour_fee = ev_labour_fee - lv_discount.
ENDIF.
ev_total_fee = ev_labour_fee + iv_parts_cost.
IF ev_total_fee < 25.
ev_total_fee = 25.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,73 @@
CLASS {{p}}t21_test DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS fee_of
IMPORTING
iv_type TYPE string
iv_hours TYPE decfloat34
iv_parts TYPE decfloat34
iv_member TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(rv_total) TYPE decfloat34.
METHODS brake_fee FOR TESTING.
METHODS minimum_fee FOR TESTING.
METHODS member_fee FOR TESTING.
METHODS negative_hours FOR TESTING.
ENDCLASS.
CLASS {{p}}t21_test IMPLEMENTATION.
METHOD fee_of.
DATA lv_labour TYPE decfloat34.
CALL FUNCTION '{{P}}REPAIR_FEE'
EXPORTING
iv_repair_type = iv_type
iv_hours = iv_hours
iv_parts_cost = iv_parts
iv_member = iv_member
IMPORTING
ev_labour_fee = lv_labour
ev_total_fee = rv_total
EXCEPTIONS
invalid_hours = 1
OTHERS = 2.
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
ENDMETHOD.
METHOD brake_fee.
DATA lv_exp TYPE decfloat34.
lv_exp = '110.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = fee_of( iv_type = 'BR' iv_hours = '1.5' iv_parts = '20' ) ).
ENDMETHOD.
METHOD minimum_fee.
DATA lv_exp TYPE decfloat34.
lv_exp = '25.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = fee_of( iv_type = 'WH' iv_hours = '0.5' iv_parts = '1' ) ).
ENDMETHOD.
METHOD member_fee.
DATA lv_exp TYPE decfloat34.
lv_exp = '101.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = fee_of( iv_type = 'BR' iv_hours = '1.5' iv_parts = '20' iv_member = abap_true ) ).
ENDMETHOD.
METHOD negative_hours.
DATA lv_total TYPE decfloat34.
CALL FUNCTION '{{P}}REPAIR_FEE'
EXPORTING
iv_repair_type = 'BR'
iv_hours = '-1'
iv_parts_cost = '0'
iv_member = abap_false
IMPORTING
ev_total_fee = lv_total
EXCEPTIONS
invalid_hours = 1
OTHERS = 2.
cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ).
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,16 @@
FUNCTION {{p}}repair_sample
IMPORTING
iv_repair_type TYPE string
iv_hours TYPE decfloat34
iv_parts_cost TYPE decfloat34
iv_member TYPE abap_bool
EXPORTING
ev_labour_fee TYPE decfloat34
ev_total_fee TYPE decfloat34
EXCEPTIONS
invalid_hours.
ev_labour_fee = 0.
ev_total_fee = 0.
ENDFUNCTION.

View File

@@ -0,0 +1,45 @@
# 1. Goal
A bicycle repair shop prices repair jobs. The workshop program calls one function
module for each repair job before it prints the work order. The new function
module must have the same interface as the sample pricing module, because the
workshop program calls all pricing modules in the same way.
# 2. Open questions
None.
# 3. Context
- Function group {{P}}FG_REPAIR exists in package $TMP.
- Function module {{P}}REPAIR_SAMPLE exists in this group. It is the sample
pricing module. Its interface is the interface that all pricing modules must
use.
# 4. Contract
- Create the function module {{P}}REPAIR_FEE in function group {{P}}FG_REPAIR.
- Use exactly the interface of {{P}}REPAIR_SAMPLE: the same parameter names,
kinds, types, and exceptions.
# 5. Business rules
1. If the hours are less than zero, raise the exception INVALID_HOURS.
2. The hourly rate depends on the repair type:
- 'BR' brake repair: 60.00
- 'GE' gear repair: 45.00
- 'WH' wheel repair: 30.00
- every other type: 40.00
3. The labour fee is the hours multiplied by the hourly rate. Round the labour
fee half up to 2 decimals. Return it in ev_labour_fee.
4. If the customer is a club member, reduce the labour fee by 10 %. Round the
reduction half up to 2 decimals. Return the reduced labour fee in
ev_labour_fee.
5. The total fee is the labour fee from rule 3 or rule 4 plus the parts cost.
Return it in ev_total_fee.
6. If the total fee is less than 25.00, set the total fee to 25.00.
# 6. Constraints
- Release target: 7.02. Use only syntax that release 7.02 supports.
- Coding standards: Clean ABAP. Keep every method below 40 statements.
- Out of scope: do not change {{P}}REPAIR_SAMPLE.
# 7. Acceptance
- The function module is active and has no syntax error.
- The hidden tests pass.
- Write ABAP Unit tests for the function module in a global test class.

View File

@@ -0,0 +1,88 @@
{
"id": "G0156",
"category": "G",
"object_type": "FUNC",
"difficulty": 2,
"release_target": "v702",
"expected_outcome": "implement",
"budget": {
"max_tool_calls": 40,
"max_activations": 10
},
"seed": [
{
"type": "FUGR",
"name": "{{P}}FG_REPAIR",
"description": "Repair pricing"
},
{
"type": "FUNC",
"name": "{{P}}REPAIR_SAMPLE",
"functionGroup": "{{P}}FG_REPAIR",
"file": "seed/repair_sample.func.abap",
"description": "Sample pricing module"
}
],
"contract": [
{
"type": "FUNC",
"name": "{{P}}REPAIR_FEE",
"functionGroup": "{{P}}FG_REPAIR",
"params": [
{
"name": "iv_repair_type",
"type": "string"
},
{
"name": "iv_hours",
"type": "decfloat34"
},
{
"name": "iv_parts_cost",
"type": "decfloat34"
},
{
"name": "iv_member",
"type": "abap_bool"
},
{
"name": "ev_labour_fee",
"type": "decfloat34"
},
{
"name": "ev_total_fee",
"type": "decfloat34"
}
]
}
],
"out_of_scope": [
"{{P}}REPAIR_SAMPLE"
],
"hidden_tests": [
{
"type": "CLAS",
"name": "{{P}}T21_HIDDEN",
"file": "hidden/t21_hidden.clas.abap",
"description": "T21 hidden tests"
}
],
"reference": [
{
"type": "FUNC",
"name": "{{P}}REPAIR_FEE",
"functionGroup": "{{P}}FG_REPAIR",
"file": "reference/repair_fee.func.abap",
"description": "Repair fee module"
},
{
"type": "CLAS",
"name": "{{P}}T21_TEST",
"file": "reference/t21_test.clas.abap",
"description": "T21 own tests"
}
],
"craft_checks": [
"method_length"
]
}