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,49 @@
INTERFACE {{p}}if_kart_check PUBLIC.
TYPES ty_reason TYPE c LENGTH 12.
TYPES:
BEGIN OF ty_booking,
driver_name TYPE c LENGTH 20,
driver_age TYPE i,
laps TYPE i,
booking_time TYPE t,
END OF ty_booking.
TYPES tt_bookings TYPE STANDARD TABLE OF ty_booking WITH EMPTY KEY.
CONSTANTS:
BEGIN OF c_reason,
ok TYPE ty_reason VALUE 'OK',
no_name TYPE ty_reason VALUE 'NO_NAME',
too_young TYPE ty_reason VALUE 'TOO_YOUNG',
too_old TYPE ty_reason VALUE 'TOO_OLD',
bad_laps TYPE ty_reason VALUE 'BAD_LAPS',
closed TYPE ty_reason VALUE 'CLOSED',
too_many TYPE ty_reason VALUE 'TOO_MANY',
END OF c_reason.
CONSTANTS:
BEGIN OF c_limit,
min_age TYPE i VALUE 12,
max_age TYPE i VALUE 75,
min_laps TYPE i VALUE 5,
max_laps TYPE i VALUE 30,
max_drivers TYPE i VALUE 8,
END OF c_limit.
CONSTANTS:
c_open_from TYPE t VALUE '090000',
c_open_to TYPE t VALUE '220000'.
METHODS check_booking
IMPORTING is_booking TYPE ty_booking
RETURNING VALUE(rv_reason) TYPE ty_reason.
METHODS check_group
IMPORTING it_bookings TYPE tt_bookings
RETURNING VALUE(rv_reason) TYPE ty_reason.
METHODS is_open
IMPORTING iv_time TYPE t
RETURNING VALUE(rv_open) TYPE abap_bool.
ENDINTERFACE.

View File

@@ -0,0 +1,116 @@
CLASS {{p}}kart_check_test DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PUBLIC SECTION.
INTERFACES {{p}}if_kart_check.
PRIVATE SECTION.
DATA mo_cut TYPE REF TO {{p}}if_kart_check.
METHODS setup.
METHODS reason_codes_are_fixed FOR TESTING.
METHODS limits_are_fixed FOR TESTING.
METHODS opening_times_are_fixed FOR TESTING.
METHODS reason_type_has_length_12 FOR TESTING.
METHODS booking_has_four_components FOR TESTING.
METHODS bookings_is_a_table FOR TESTING.
METHODS check_booking_returns_ok FOR TESTING.
METHODS is_open_returns_true FOR TESTING.
ENDCLASS.
CLASS {{p}}kart_check_test IMPLEMENTATION.
METHOD setup.
mo_cut = me.
ENDMETHOD.
METHOD reason_codes_are_fixed.
cl_abap_unit_assert=>assert_equals( exp = 'OK'
act = {{p}}if_kart_check=>c_reason-ok ).
cl_abap_unit_assert=>assert_equals( exp = 'NO_NAME'
act = {{p}}if_kart_check=>c_reason-no_name ).
cl_abap_unit_assert=>assert_equals( exp = 'TOO_YOUNG'
act = {{p}}if_kart_check=>c_reason-too_young ).
cl_abap_unit_assert=>assert_equals( exp = 'TOO_OLD'
act = {{p}}if_kart_check=>c_reason-too_old ).
cl_abap_unit_assert=>assert_equals( exp = 'BAD_LAPS'
act = {{p}}if_kart_check=>c_reason-bad_laps ).
cl_abap_unit_assert=>assert_equals( exp = 'CLOSED'
act = {{p}}if_kart_check=>c_reason-closed ).
cl_abap_unit_assert=>assert_equals( exp = 'TOO_MANY'
act = {{p}}if_kart_check=>c_reason-too_many ).
ENDMETHOD.
METHOD limits_are_fixed.
cl_abap_unit_assert=>assert_equals( exp = 12
act = {{p}}if_kart_check=>c_limit-min_age ).
cl_abap_unit_assert=>assert_equals( exp = 75
act = {{p}}if_kart_check=>c_limit-max_age ).
cl_abap_unit_assert=>assert_equals( exp = 5
act = {{p}}if_kart_check=>c_limit-min_laps ).
cl_abap_unit_assert=>assert_equals( exp = 30
act = {{p}}if_kart_check=>c_limit-max_laps ).
cl_abap_unit_assert=>assert_equals( exp = 8
act = {{p}}if_kart_check=>c_limit-max_drivers ).
ENDMETHOD.
METHOD opening_times_are_fixed.
DATA lv_from TYPE t VALUE '090000'.
DATA lv_to TYPE t VALUE '220000'.
cl_abap_unit_assert=>assert_equals( exp = lv_from
act = {{p}}if_kart_check=>c_open_from ).
cl_abap_unit_assert=>assert_equals( exp = lv_to
act = {{p}}if_kart_check=>c_open_to ).
ENDMETHOD.
METHOD reason_type_has_length_12.
DATA lv_reason TYPE {{p}}if_kart_check=>ty_reason.
DATA lv_probe TYPE string.
DO 13 TIMES.
lv_probe = lv_probe && 'X'.
ENDDO.
lv_reason = lv_probe.
cl_abap_unit_assert=>assert_equals( exp = 'XXXXXXXXXXXX'
act = lv_reason ).
ENDMETHOD.
METHOD booking_has_four_components.
DATA ls_booking TYPE {{p}}if_kart_check=>ty_booking.
DATA(lo_descr) = cl_abap_typedescr=>describe_by_data( ls_booking ).
DATA(lo_struct) = CAST cl_abap_structdescr( lo_descr ).
cl_abap_unit_assert=>assert_equals( exp = 4
act = lines( lo_struct->components ) ).
ENDMETHOD.
METHOD bookings_is_a_table.
DATA lt_bookings TYPE {{p}}if_kart_check=>tt_bookings.
DATA(lo_descr) = cl_abap_typedescr=>describe_by_data( lt_bookings ).
cl_abap_unit_assert=>assert_equals( exp = cl_abap_typedescr=>typekind_table
act = lo_descr->type_kind ).
ENDMETHOD.
METHOD check_booking_returns_ok.
DATA ls_booking TYPE {{p}}if_kart_check=>ty_booking.
ls_booking-driver_name = 'ANNA BEISPIEL'.
ls_booking-driver_age = 25.
ls_booking-laps = 8.
ls_booking-booking_time = '100000'.
cl_abap_unit_assert=>assert_equals( exp = 'OK'
act = mo_cut->check_booking( ls_booking ) ).
ENDMETHOD.
METHOD is_open_returns_true.
DATA lv_time TYPE t VALUE '150000'.
cl_abap_unit_assert=>assert_equals( exp = abap_true
act = mo_cut->is_open( lv_time ) ).
ENDMETHOD.
METHOD {{p}}if_kart_check~check_booking.
rv_reason = {{p}}if_kart_check=>c_reason-ok.
ENDMETHOD.
METHOD {{p}}if_kart_check~check_group.
rv_reason = {{p}}if_kart_check=>c_reason-ok.
ENDMETHOD.
METHOD {{p}}if_kart_check~is_open.
rv_open = abap_true.
ENDMETHOD.
ENDCLASS.