Fix coverage with several contract classes; table annotation and file path checks; clean task dir on write
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
86
tasks_gen/eval/G0105/spec.md
Normal file
86
tasks_gen/eval/G0105/spec.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# 1. Goal
|
||||
|
||||
A toll operator charges a fee for each truck trip on its road network. The trip
|
||||
log program calls one function module for each trip. The call happens before
|
||||
the program stores the trip. The fee depends only on the trip data that the
|
||||
caller passes.
|
||||
|
||||
# 2. Open questions
|
||||
|
||||
None.
|
||||
|
||||
# 3. Context
|
||||
|
||||
- Function group {{P}}FG_TOLL exists in package $TMP.
|
||||
- All objects of this task are in package $TMP.
|
||||
- The trip log program is not part of this task.
|
||||
|
||||
# 4. Contract
|
||||
|
||||
## 4.1 Function module {{P}}TOLL_FEE
|
||||
|
||||
Create the function module {{P}}TOLL_FEE in function group {{P}}FG_TOLL.
|
||||
The interface is exactly:
|
||||
|
||||
IMPORTING
|
||||
iv_distance_km TYPE decfloat34
|
||||
iv_weight_class TYPE i
|
||||
iv_axles TYPE i
|
||||
EXPORTING
|
||||
ev_fee TYPE decfloat34
|
||||
EXCEPTIONS
|
||||
invalid_input
|
||||
|
||||
## 4.2 Class {{P}}TOLL_CALC
|
||||
|
||||
Create the global class {{P}}TOLL_CALC in package $TMP. The class is public and
|
||||
final. The class has a public instance constructor without parameters.
|
||||
The class has this public method:
|
||||
|
||||
METHODS calculate
|
||||
IMPORTING iv_distance_km TYPE decfloat34
|
||||
iv_weight_class TYPE i
|
||||
iv_axles TYPE i
|
||||
RETURNING VALUE(rv_fee) TYPE decfloat34
|
||||
RAISING cx_abap_invalid_value.
|
||||
|
||||
# 5. Business rules
|
||||
|
||||
1. The distance is the length of the trip in kilometres. A distance below 0
|
||||
is invalid input.
|
||||
2. The weight class is 1, 2, 3, or 4. Every other value is invalid input.
|
||||
3. The number of axles is 2, 3, 4, or 5. Every other value is invalid input.
|
||||
4. Invalid input raises the exception INVALID_INPUT in {{P}}TOLL_FEE and the
|
||||
exception CX_ABAP_INVALID_VALUE in {{P}}TOLL_CALC. {{P}}TOLL_FEE does not
|
||||
set the fee in this case.
|
||||
5. The base rate per kilometre depends on the weight class:
|
||||
- Weight class 1: 0.10
|
||||
- Weight class 2: 0.14
|
||||
- Weight class 3: 0.18
|
||||
- Weight class 4: 0.22
|
||||
6. The number of axles adds a surcharge to the base amount:
|
||||
- 2 axles: 0 %
|
||||
- 3 axles: 5 %
|
||||
- 4 axles: 10 %
|
||||
- 5 axles: 15 %
|
||||
7. The base amount is the distance multiplied by the base rate. The fee is the
|
||||
base amount increased by the surcharge percentage. Round the fee half up to
|
||||
2 decimals.
|
||||
8. The minimum fee is 1.00. If the fee from rule 7 is below 1.00, the fee is
|
||||
1.00.
|
||||
9. {{P}}TOLL_FEE returns the fee that {{P}}TOLL_CALC calculates.
|
||||
|
||||
# 6. Constraints
|
||||
|
||||
- Release target: 7.58.
|
||||
- The calculation is pure logic. It reads no database table and no other
|
||||
external data.
|
||||
- Out of scope: the trip log program and every object that is not in the
|
||||
contract.
|
||||
|
||||
# 7. Acceptance
|
||||
|
||||
- {{P}}TOLL_FEE and {{P}}TOLL_CALC are active and have no syntax error.
|
||||
- The hidden tests pass.
|
||||
- Write ABAP Unit tests. Put local test classes in {{P}}TOLL_CALC. Write a
|
||||
global test class for {{P}}TOLL_FEE.
|
||||
Reference in New Issue
Block a user