Snapshot: new training tasks (balanced generation), docs

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-05 22:08:59 +02:00
parent eb13453097
commit 6984fc7917
572 changed files with 30024 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
CLASS {{p}}cx_crane_error DEFINITION
PUBLIC
INHERITING FROM cx_static_check
FINAL
CREATE PUBLIC.
PUBLIC SECTION.
METHODS constructor
IMPORTING
iv_msgno TYPE symsgno
iv_attr1 TYPE string OPTIONAL
iv_attr2 TYPE string OPTIONAL.
METHODS get_message_text
RETURNING
VALUE(rv_text) TYPE string.
PRIVATE SECTION.
DATA mv_text TYPE string.
ENDCLASS.
CLASS {{p}}cx_crane_error IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
MESSAGE ID '{{P}}MSG_CRANE' TYPE 'I' NUMBER iv_msgno
WITH iv_attr1 iv_attr2 INTO mv_text.
ENDMETHOD.
METHOD get_message_text.
rv_text = mv_text.
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,44 @@
CLASS {{p}}lift_check DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
PUBLIC SECTION.
TYPES:
BEGIN OF ty_lift_plan,
plan_id TYPE string,
crane_id TYPE string,
load_kg TYPE decfloat34,
capacity_kg TYPE decfloat34,
wind_kmh TYPE decfloat34,
END OF ty_lift_plan.
METHODS check_lift_plan
IMPORTING
iv_plan TYPE ty_lift_plan
RAISING
{{p}}cx_crane_error.
ENDCLASS.
CLASS {{p}}lift_check IMPLEMENTATION.
METHOD check_lift_plan.
IF iv_plan-crane_id IS INITIAL.
RAISE EXCEPTION TYPE {{p}}cx_crane_error
EXPORTING
iv_msgno = '001'
iv_attr1 = iv_plan-plan_id.
ELSEIF iv_plan-load_kg > iv_plan-capacity_kg.
RAISE EXCEPTION TYPE {{p}}cx_crane_error
EXPORTING
iv_msgno = '002'
iv_attr1 = iv_plan-plan_id
iv_attr2 = iv_plan-crane_id.
ELSEIF iv_plan-wind_kmh > 60.
RAISE EXCEPTION TYPE {{p}}cx_crane_error
EXPORTING
iv_msgno = '003'
iv_attr1 = iv_plan-plan_id.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,66 @@
CLASS ltc_lift_check DEFINITION FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS no_crane FOR TESTING.
METHODS overload FOR TESTING.
METHODS wind FOR TESTING.
METHODS valid_plan FOR TESTING.
ENDCLASS.
CLASS ltc_lift_check IMPLEMENTATION.
METHOD no_crane.
DATA(ls_plan) = VALUE {{p}}lift_check=>ty_lift_plan(
plan_id = 'L-1' crane_id = '' ).
DATA(lo_check) = NEW {{p}}lift_check( ).
TRY.
lo_check->check_lift_plan( ls_plan ).
cl_abap_unit_assert=>fail( msg = 'Exception expected' ).
CATCH {{p}}cx_crane_error INTO DATA(lo_error).
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-1 has no crane'
act = lo_error->get_message_text( ) ).
ENDTRY.
ENDMETHOD.
METHOD overload.
DATA(ls_plan) = VALUE {{p}}lift_check=>ty_lift_plan(
plan_id = 'L-2' crane_id = 'K-1' load_kg = 2000 capacity_kg = 1000 ).
DATA(lo_check) = NEW {{p}}lift_check( ).
TRY.
lo_check->check_lift_plan( ls_plan ).
cl_abap_unit_assert=>fail( msg = 'Exception expected' ).
CATCH {{p}}cx_crane_error INTO DATA(lo_error).
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-2 is too heavy for crane K-1'
act = lo_error->get_message_text( ) ).
ENDTRY.
ENDMETHOD.
METHOD wind.
DATA(ls_plan) = VALUE {{p}}lift_check=>ty_lift_plan(
plan_id = 'L-3' crane_id = 'K-1' wind_kmh = 80 ).
DATA(lo_check) = NEW {{p}}lift_check( ).
TRY.
lo_check->check_lift_plan( ls_plan ).
cl_abap_unit_assert=>fail( msg = 'Exception expected' ).
CATCH {{p}}cx_crane_error INTO DATA(lo_error).
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-3 is blocked because of wind'
act = lo_error->get_message_text( ) ).
ENDTRY.
ENDMETHOD.
METHOD valid_plan.
DATA(ls_plan) = VALUE {{p}}lift_check=>ty_lift_plan(
plan_id = 'L-4' crane_id = 'K-1' load_kg = 500 capacity_kg = 1000 wind_kmh = 30 ).
DATA(lo_check) = NEW {{p}}lift_check( ).
TRY.
lo_check->check_lift_plan( ls_plan ).
CATCH {{p}}cx_crane_error INTO DATA(lo_error).
cl_abap_unit_assert=>fail( msg = lo_error->get_message_text( ) ).
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,63 @@
CLASS {{p}}lift_test DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS message_001 FOR TESTING.
METHODS message_002 FOR TESTING.
METHODS message_003 FOR TESTING.
METHODS message_004 FOR TESTING.
METHODS message_005 FOR TESTING.
METHODS exception_text FOR TESTING.
ENDCLASS.
CLASS {{p}}lift_test IMPLEMENTATION.
METHOD message_001.
DATA lv_text TYPE string.
MESSAGE ID '{{P}}MSG_CRANE' TYPE 'E' NUMBER '001' WITH 'L-100' INTO lv_text.
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 has no crane'
act = lv_text ).
ENDMETHOD.
METHOD message_002.
DATA lv_text TYPE string.
MESSAGE ID '{{P}}MSG_CRANE' TYPE 'E' NUMBER '002' WITH 'L-100' 'K-7' INTO lv_text.
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 is too heavy for crane K-7'
act = lv_text ).
ENDMETHOD.
METHOD message_003.
DATA lv_text TYPE string.
MESSAGE ID '{{P}}MSG_CRANE' TYPE 'E' NUMBER '003' WITH 'L-100' INTO lv_text.
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 is blocked because of wind'
act = lv_text ).
ENDMETHOD.
METHOD message_004.
DATA lv_text TYPE string.
MESSAGE ID '{{P}}MSG_CRANE' TYPE 'W' NUMBER '004' WITH 'L-100' INTO lv_text.
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 is near the load limit'
act = lv_text ).
ENDMETHOD.
METHOD message_005.
DATA lv_text TYPE string.
MESSAGE ID '{{P}}MSG_CRANE' TYPE 'I' NUMBER '005' WITH 'L-100' INTO lv_text.
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 is approved'
act = lv_text ).
ENDMETHOD.
METHOD exception_text.
DATA(lo_error) = NEW {{p}}cx_crane_error( iv_msgno = '002'
iv_attr1 = 'L-100'
iv_attr2 = 'K-7' ).
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 is too heavy for crane K-7'
act = lo_error->get_message_text( ) ).
ENDMETHOD.
ENDCLASS.