Snapshot: new training tasks (balanced generation), docs
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
28
tasks_gen/train/G1914/reference/if_rope_check.intf.abap
Normal file
28
tasks_gen/train/G1914/reference/if_rope_check.intf.abap
Normal 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.
|
||||
85
tasks_gen/train/G1914/reference/rope_check_test.clas.abap
Normal file
85
tasks_gen/train/G1914/reference/rope_check_test.clas.abap
Normal 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.
|
||||
67
tasks_gen/train/G1914/reference/rope_checker.clas.abap
Normal file
67
tasks_gen/train/G1914/reference/rope_checker.clas.abap
Normal 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.
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user