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,28 @@
INTERFACE {{p}}if_rope_check PUBLIC.
TYPES ty_reason TYPE c LENGTH 10.
TYPES ty_ticket TYPE c LENGTH 10.
CONSTANTS:
BEGIN OF c_reason,
ok TYPE ty_reason VALUE 'OK',
empty TYPE ty_reason VALUE 'EMPTY',
ticket TYPE ty_reason VALUE 'TICKET',
age TYPE ty_reason VALUE 'AGE',
hours TYPE ty_reason VALUE 'HOURS',
height TYPE ty_reason VALUE 'HEIGHT',
END OF c_reason.
CONSTANTS:
BEGIN OF c_ticket,
level_1 TYPE ty_ticket VALUE 'LEVEL_1',
level_2 TYPE ty_ticket VALUE 'LEVEL_2',
level_3 TYPE ty_ticket VALUE 'LEVEL_3',
END OF c_ticket.
METHODS check
IMPORTING iv_ticket TYPE ty_ticket
iv_height_m TYPE i
iv_logged_hours TYPE i
iv_age TYPE i
RETURNING VALUE(rv_reason) TYPE ty_reason.
ENDINTERFACE.

View File

@@ -0,0 +1,85 @@
CLASS {{p}}rope_check_test DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA mo_cut TYPE REF TO {{p}}if_rope_check.
METHODS setup.
METHODS level_1_ok FOR TESTING.
METHODS level_2_ok FOR TESTING.
METHODS level_3_ok FOR TESTING.
METHODS ticket_case_and_space FOR TESTING.
METHODS empty_ticket FOR TESTING.
METHODS unknown_ticket FOR TESTING.
METHODS too_young FOR TESTING.
METHODS too_few_hours FOR TESTING.
METHODS too_high FOR TESTING.
ENDCLASS.
CLASS {{p}}rope_check_test IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}rope_checker( ).
ENDMETHOD.
METHOD level_1_ok.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-ok
act = mo_cut->check( iv_ticket = 'LEVEL_1' iv_height_m = 30
iv_logged_hours = 0 iv_age = 18 ) ).
ENDMETHOD.
METHOD level_2_ok.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-ok
act = mo_cut->check( iv_ticket = 'LEVEL_2' iv_height_m = 60
iv_logged_hours = 500 iv_age = 18 ) ).
ENDMETHOD.
METHOD level_3_ok.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-ok
act = mo_cut->check( iv_ticket = 'LEVEL_3' iv_height_m = 120
iv_logged_hours = 1000 iv_age = 21 ) ).
ENDMETHOD.
METHOD ticket_case_and_space.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-ok
act = mo_cut->check( iv_ticket = ' level_2 ' iv_height_m = 60
iv_logged_hours = 500 iv_age = 18 ) ).
ENDMETHOD.
METHOD empty_ticket.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-empty
act = mo_cut->check( iv_ticket = '' iv_height_m = 10
iv_logged_hours = 0 iv_age = 40 ) ).
ENDMETHOD.
METHOD unknown_ticket.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-ticket
act = mo_cut->check( iv_ticket = 'LEVEL_9' iv_height_m = 10
iv_logged_hours = 0 iv_age = 40 ) ).
ENDMETHOD.
METHOD too_young.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-age
act = mo_cut->check( iv_ticket = 'LEVEL_3' iv_height_m = 120
iv_logged_hours = 1000 iv_age = 20 ) ).
ENDMETHOD.
METHOD too_few_hours.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-hours
act = mo_cut->check( iv_ticket = 'LEVEL_2' iv_height_m = 60
iv_logged_hours = 499 iv_age = 18 ) ).
ENDMETHOD.
METHOD too_high.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-height
act = mo_cut->check( iv_ticket = 'LEVEL_2' iv_height_m = 61
iv_logged_hours = 500 iv_age = 18 ) ).
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,67 @@
CLASS {{p}}rope_checker DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES {{p}}if_rope_check.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_limit,
ticket TYPE {{p}}if_rope_check=>ty_ticket,
min_age TYPE i,
min_hours TYPE i,
max_height TYPE i,
END OF ty_limit,
tt_limit TYPE HASHED TABLE OF ty_limit WITH UNIQUE KEY ticket.
METHODS normalize_ticket
IMPORTING iv_ticket TYPE {{p}}if_rope_check=>ty_ticket
RETURNING VALUE(rv_ticket) TYPE {{p}}if_rope_check=>ty_ticket.
METHODS limits
RETURNING VALUE(rt_limit) TYPE tt_limit.
ENDCLASS.
CLASS {{p}}rope_checker IMPLEMENTATION.
METHOD {{p}}if_rope_check~check.
DATA(lv_ticket) = normalize_ticket( iv_ticket ).
IF lv_ticket IS INITIAL.
rv_reason = {{p}}if_rope_check=>c_reason-empty.
RETURN.
ENDIF.
DATA(lt_limit) = limits( ).
ASSIGN lt_limit[ ticket = lv_ticket ] TO FIELD-SYMBOL(<ls_limit>).
IF sy-subrc <> 0.
rv_reason = {{p}}if_rope_check=>c_reason-ticket.
RETURN.
ENDIF.
IF iv_age < <ls_limit>-min_age.
rv_reason = {{p}}if_rope_check=>c_reason-age.
RETURN.
ENDIF.
IF iv_logged_hours < <ls_limit>-min_hours.
rv_reason = {{p}}if_rope_check=>c_reason-hours.
RETURN.
ENDIF.
IF iv_height_m > <ls_limit>-max_height.
rv_reason = {{p}}if_rope_check=>c_reason-height.
RETURN.
ENDIF.
rv_reason = {{p}}if_rope_check=>c_reason-ok.
ENDMETHOD.
METHOD normalize_ticket.
rv_ticket = to_upper( replace( val = iv_ticket sub = ` ` with = `` occ = 0 ) ).
ENDMETHOD.
METHOD limits.
rt_limit = VALUE #(
( ticket = {{p}}if_rope_check=>c_ticket-level_1 min_age = 18 min_hours = 0 max_height = 30 )
( ticket = {{p}}if_rope_check=>c_ticket-level_2 min_age = 18 min_hours = 500 max_height = 60 )
( ticket = {{p}}if_rope_check=>c_ticket-level_3 min_age = 21 min_hours = 1000 max_height = 120 ) ).
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,76 @@
CLASS ltc_rope_checker DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA mo_cut TYPE REF TO {{p}}if_rope_check.
METHODS setup.
METHODS level_1_ok FOR TESTING.
METHODS level_3_ok FOR TESTING.
METHODS ticket_case_and_space FOR TESTING.
METHODS empty_ticket FOR TESTING.
METHODS unknown_ticket FOR TESTING.
METHODS too_young FOR TESTING.
METHODS too_few_hours FOR TESTING.
METHODS too_high FOR TESTING.
ENDCLASS.
CLASS ltc_rope_checker IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}rope_checker( ).
ENDMETHOD.
METHOD level_1_ok.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-ok
act = mo_cut->check( iv_ticket = 'LEVEL_1' iv_height_m = 30
iv_logged_hours = 0 iv_age = 18 ) ).
ENDMETHOD.
METHOD level_3_ok.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-ok
act = mo_cut->check( iv_ticket = 'LEVEL_3' iv_height_m = 120
iv_logged_hours = 1000 iv_age = 21 ) ).
ENDMETHOD.
METHOD ticket_case_and_space.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-ok
act = mo_cut->check( iv_ticket = ' level_2 ' iv_height_m = 60
iv_logged_hours = 500 iv_age = 18 ) ).
ENDMETHOD.
METHOD empty_ticket.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-empty
act = mo_cut->check( iv_ticket = '' iv_height_m = 10
iv_logged_hours = 0 iv_age = 40 ) ).
ENDMETHOD.
METHOD unknown_ticket.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-ticket
act = mo_cut->check( iv_ticket = 'LEVEL_9' iv_height_m = 10
iv_logged_hours = 0 iv_age = 40 ) ).
ENDMETHOD.
METHOD too_young.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-age
act = mo_cut->check( iv_ticket = 'LEVEL_3' iv_height_m = 120
iv_logged_hours = 1000 iv_age = 20 ) ).
ENDMETHOD.
METHOD too_few_hours.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-hours
act = mo_cut->check( iv_ticket = 'LEVEL_2' iv_height_m = 60
iv_logged_hours = 499 iv_age = 18 ) ).
ENDMETHOD.
METHOD too_high.
cl_abap_unit_assert=>assert_equals(
exp = {{p}}if_rope_check=>c_reason-height
act = mo_cut->check( iv_ticket = 'LEVEL_2' iv_height_m = 61
iv_logged_hours = 500 iv_age = 18 ) ).
ENDMETHOD.
ENDCLASS.