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:
93
tasks_gen/eval/G0126/reference/bag_drop.clas.abap
Normal file
93
tasks_gen/eval/G0126/reference/bag_drop.clas.abap
Normal file
@@ -0,0 +1,93 @@
|
||||
CLASS {{p}}bag_drop DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES:
|
||||
ty_tag TYPE c LENGTH 10,
|
||||
ty_weight TYPE p LENGTH 5 DECIMALS 2,
|
||||
ty_size TYPE i,
|
||||
ty_count TYPE i,
|
||||
ty_minutes TYPE i.
|
||||
|
||||
METHODS accept_bag
|
||||
IMPORTING
|
||||
iv_tag TYPE ty_tag
|
||||
iv_weight TYPE ty_weight
|
||||
iv_length TYPE ty_size
|
||||
iv_width TYPE ty_size
|
||||
iv_height TYPE ty_size
|
||||
iv_bags_checked TYPE ty_count
|
||||
iv_min_to_dep TYPE ty_minutes
|
||||
RAISING
|
||||
{{p}}cx_bag_tag
|
||||
{{p}}cx_bag_weight
|
||||
{{p}}cx_bag_size
|
||||
{{p}}cx_bag_limit
|
||||
{{p}}cx_bag_late.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
c_max_weight TYPE ty_weight VALUE 23,
|
||||
c_max_size TYPE ty_size VALUE 158,
|
||||
c_max_bags TYPE ty_count VALUE 2,
|
||||
c_min_minutes TYPE ty_minutes VALUE 40.
|
||||
|
||||
METHODS check_tag
|
||||
IMPORTING iv_tag TYPE ty_tag
|
||||
RAISING {{p}}cx_bag_tag.
|
||||
METHODS check_weight
|
||||
IMPORTING iv_weight TYPE ty_weight
|
||||
RAISING {{p}}cx_bag_weight.
|
||||
METHODS check_size
|
||||
IMPORTING iv_length TYPE ty_size
|
||||
iv_width TYPE ty_size
|
||||
iv_height TYPE ty_size
|
||||
RAISING {{p}}cx_bag_size.
|
||||
METHODS check_bag_count
|
||||
IMPORTING iv_bags_checked TYPE ty_count
|
||||
RAISING {{p}}cx_bag_limit.
|
||||
METHODS check_departure
|
||||
IMPORTING iv_min_to_dep TYPE ty_minutes
|
||||
RAISING {{p}}cx_bag_late.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}bag_drop IMPLEMENTATION.
|
||||
METHOD accept_bag.
|
||||
check_tag( iv_tag ).
|
||||
check_weight( iv_weight ).
|
||||
check_size( iv_length = iv_length
|
||||
iv_width = iv_width
|
||||
iv_height = iv_height ).
|
||||
check_bag_count( iv_bags_checked ).
|
||||
check_departure( iv_min_to_dep ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_tag.
|
||||
IF iv_tag CN '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_bag_tag.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_weight.
|
||||
IF iv_weight > c_max_weight.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_bag_weight.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_size.
|
||||
IF iv_length + iv_width + iv_height > c_max_size.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_bag_size.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_bag_count.
|
||||
IF iv_bags_checked >= c_max_bags.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_bag_limit.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_departure.
|
||||
IF iv_min_to_dep < c_min_minutes.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_bag_late.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
218
tasks_gen/eval/G0126/reference/bag_drop.testclasses.abap
Normal file
218
tasks_gen/eval/G0126/reference/bag_drop.testclasses.abap
Normal file
@@ -0,0 +1,218 @@
|
||||
CLASS ltc_bag_drop DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO {{p}}bag_drop.
|
||||
METHODS setup.
|
||||
METHODS accepts_valid_bag FOR TESTING.
|
||||
METHODS rejects_bad_tag FOR TESTING.
|
||||
METHODS accepts_max_weight FOR TESTING.
|
||||
METHODS rejects_overweight FOR TESTING.
|
||||
METHODS accepts_max_size FOR TESTING.
|
||||
METHODS rejects_oversize FOR TESTING.
|
||||
METHODS accepts_one_bag FOR TESTING.
|
||||
METHODS rejects_third_bag FOR TESTING.
|
||||
METHODS accepts_40_minutes FOR TESTING.
|
||||
METHODS rejects_39_minutes FOR TESTING.
|
||||
METHODS tag_checked_first FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltc_bag_drop IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}bag_drop( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD accepts_valid_bag.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = 'AB12345678'
|
||||
iv_weight = 20
|
||||
iv_length = 55
|
||||
iv_width = 40
|
||||
iv_height = 20
|
||||
iv_bags_checked = 0
|
||||
iv_min_to_dep = 90 ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'A valid bag was rejected' ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_bad_tag.
|
||||
DATA lv_tag TYPE {{p}}bag_drop=>ty_tag.
|
||||
DATA lo_tag TYPE REF TO {{p}}cx_bag_tag.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = lv_tag
|
||||
iv_weight = 20
|
||||
iv_length = 55
|
||||
iv_width = 40
|
||||
iv_height = 20
|
||||
iv_bags_checked = 0
|
||||
iv_min_to_dep = 90 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'An empty tag was accepted' ).
|
||||
CATCH {{p}}cx_bag_tag INTO lo_tag.
|
||||
cl_abap_unit_assert=>assert_equals( exp = `Invalid bag tag` act = lo_tag->mv_text ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'Wrong exception type' ).
|
||||
ENDTRY.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = 'AB-2345678'
|
||||
iv_weight = 20
|
||||
iv_length = 55
|
||||
iv_width = 40
|
||||
iv_height = 20
|
||||
iv_bags_checked = 0
|
||||
iv_min_to_dep = 90 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'A bag with a bad tag was accepted' ).
|
||||
CATCH {{p}}cx_bag_tag INTO lo_tag.
|
||||
cl_abap_unit_assert=>assert_equals( exp = `Invalid bag tag` act = lo_tag->mv_text ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'Wrong exception type' ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD accepts_max_weight.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = 'AB12345678'
|
||||
iv_weight = 23
|
||||
iv_length = 55
|
||||
iv_width = 40
|
||||
iv_height = 20
|
||||
iv_bags_checked = 0
|
||||
iv_min_to_dep = 90 ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'A bag at the weight limit was rejected' ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_overweight.
|
||||
DATA lv_weight TYPE {{p}}bag_drop=>ty_weight.
|
||||
DATA lo_weight TYPE REF TO {{p}}cx_bag_weight.
|
||||
lv_weight = '23.01'.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = 'AB12345678'
|
||||
iv_weight = lv_weight
|
||||
iv_length = 55
|
||||
iv_width = 40
|
||||
iv_height = 20
|
||||
iv_bags_checked = 0
|
||||
iv_min_to_dep = 90 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'An overweight bag was accepted' ).
|
||||
CATCH {{p}}cx_bag_weight INTO lo_weight.
|
||||
cl_abap_unit_assert=>assert_equals( exp = `Bag is too heavy` act = lo_weight->mv_text ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'Wrong exception type' ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD accepts_max_size.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = 'AB12345678'
|
||||
iv_weight = 20
|
||||
iv_length = 70
|
||||
iv_width = 50
|
||||
iv_height = 38
|
||||
iv_bags_checked = 0
|
||||
iv_min_to_dep = 90 ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'A bag at the size limit was rejected' ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_oversize.
|
||||
DATA lo_size TYPE REF TO {{p}}cx_bag_size.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = 'AB12345678'
|
||||
iv_weight = 20
|
||||
iv_length = 70
|
||||
iv_width = 50
|
||||
iv_height = 39
|
||||
iv_bags_checked = 0
|
||||
iv_min_to_dep = 90 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'An oversize bag was accepted' ).
|
||||
CATCH {{p}}cx_bag_size INTO lo_size.
|
||||
cl_abap_unit_assert=>assert_equals( exp = `Bag is too large` act = lo_size->mv_text ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'Wrong exception type' ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD accepts_one_bag.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = 'AB12345678'
|
||||
iv_weight = 20
|
||||
iv_length = 55
|
||||
iv_width = 40
|
||||
iv_height = 20
|
||||
iv_bags_checked = 1
|
||||
iv_min_to_dep = 90 ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'A second bag was rejected' ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_third_bag.
|
||||
DATA lo_limit TYPE REF TO {{p}}cx_bag_limit.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = 'AB12345678'
|
||||
iv_weight = 20
|
||||
iv_length = 55
|
||||
iv_width = 40
|
||||
iv_height = 20
|
||||
iv_bags_checked = 2
|
||||
iv_min_to_dep = 90 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'A third bag was accepted' ).
|
||||
CATCH {{p}}cx_bag_limit INTO lo_limit.
|
||||
cl_abap_unit_assert=>assert_equals( exp = `Bag limit reached` act = lo_limit->mv_text ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'Wrong exception type' ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD accepts_40_minutes.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = 'AB12345678'
|
||||
iv_weight = 20
|
||||
iv_length = 55
|
||||
iv_width = 40
|
||||
iv_height = 20
|
||||
iv_bags_checked = 0
|
||||
iv_min_to_dep = 40 ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'A bag at the time limit was rejected' ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_39_minutes.
|
||||
DATA lo_late TYPE REF TO {{p}}cx_bag_late.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = 'AB12345678'
|
||||
iv_weight = 20
|
||||
iv_length = 55
|
||||
iv_width = 40
|
||||
iv_height = 20
|
||||
iv_bags_checked = 0
|
||||
iv_min_to_dep = 39 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'A late bag was accepted' ).
|
||||
CATCH {{p}}cx_bag_late INTO lo_late.
|
||||
cl_abap_unit_assert=>assert_equals( exp = `Check-in closed` act = lo_late->mv_text ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'Wrong exception type' ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD tag_checked_first.
|
||||
DATA lo_tag TYPE REF TO {{p}}cx_bag_tag.
|
||||
TRY.
|
||||
mo_cut->accept_bag( iv_tag = 'ab12345678'
|
||||
iv_weight = 30
|
||||
iv_length = 200
|
||||
iv_width = 100
|
||||
iv_height = 100
|
||||
iv_bags_checked = 5
|
||||
iv_min_to_dep = 10 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'A bag with a bad tag was accepted' ).
|
||||
CATCH {{p}}cx_bag_tag INTO lo_tag.
|
||||
cl_abap_unit_assert=>assert_equals( exp = `Invalid bag tag` act = lo_tag->mv_text ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( msg = 'Wrong exception type' ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
13
tasks_gen/eval/G0126/reference/cx_bag_late.clas.abap
Normal file
13
tasks_gen/eval/G0126/reference/cx_bag_late.clas.abap
Normal file
@@ -0,0 +1,13 @@
|
||||
CLASS {{p}}cx_bag_late DEFINITION PUBLIC FINAL CREATE PUBLIC INHERITING FROM cx_static_check.
|
||||
PUBLIC SECTION.
|
||||
DATA mv_text TYPE string READ-ONLY.
|
||||
METHODS constructor.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}cx_bag_late IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
mv_text = 'Check-in closed'.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
13
tasks_gen/eval/G0126/reference/cx_bag_limit.clas.abap
Normal file
13
tasks_gen/eval/G0126/reference/cx_bag_limit.clas.abap
Normal file
@@ -0,0 +1,13 @@
|
||||
CLASS {{p}}cx_bag_limit DEFINITION PUBLIC FINAL CREATE PUBLIC INHERITING FROM cx_static_check.
|
||||
PUBLIC SECTION.
|
||||
DATA mv_text TYPE string READ-ONLY.
|
||||
METHODS constructor.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}cx_bag_limit IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
mv_text = 'Bag limit reached'.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
13
tasks_gen/eval/G0126/reference/cx_bag_size.clas.abap
Normal file
13
tasks_gen/eval/G0126/reference/cx_bag_size.clas.abap
Normal file
@@ -0,0 +1,13 @@
|
||||
CLASS {{p}}cx_bag_size DEFINITION PUBLIC FINAL CREATE PUBLIC INHERITING FROM cx_static_check.
|
||||
PUBLIC SECTION.
|
||||
DATA mv_text TYPE string READ-ONLY.
|
||||
METHODS constructor.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}cx_bag_size IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
mv_text = 'Bag is too large'.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
13
tasks_gen/eval/G0126/reference/cx_bag_tag.clas.abap
Normal file
13
tasks_gen/eval/G0126/reference/cx_bag_tag.clas.abap
Normal file
@@ -0,0 +1,13 @@
|
||||
CLASS {{p}}cx_bag_tag DEFINITION PUBLIC FINAL CREATE PUBLIC INHERITING FROM cx_static_check.
|
||||
PUBLIC SECTION.
|
||||
DATA mv_text TYPE string READ-ONLY.
|
||||
METHODS constructor.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}cx_bag_tag IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
mv_text = 'Invalid bag tag'.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
13
tasks_gen/eval/G0126/reference/cx_bag_weight.clas.abap
Normal file
13
tasks_gen/eval/G0126/reference/cx_bag_weight.clas.abap
Normal file
@@ -0,0 +1,13 @@
|
||||
CLASS {{p}}cx_bag_weight DEFINITION PUBLIC FINAL CREATE PUBLIC INHERITING FROM cx_static_check.
|
||||
PUBLIC SECTION.
|
||||
DATA mv_text TYPE string READ-ONLY.
|
||||
METHODS constructor.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}cx_bag_weight IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
mv_text = 'Bag is too heavy'.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user