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:
92
tasks_gen/eval/G0127/faulty/m0_ferry_load_check.clas.abap
Normal file
92
tasks_gen/eval/G0127/faulty/m0_ferry_load_check.clas.abap
Normal file
@@ -0,0 +1,92 @@
|
||||
CLASS {{p}}ferry_load_check DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_plate TYPE c LENGTH 10.
|
||||
TYPES ty_category TYPE c LENGTH 1.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_vehicle,
|
||||
plate TYPE ty_plate,
|
||||
category TYPE ty_category,
|
||||
weight_kg TYPE i,
|
||||
length_cm TYPE i,
|
||||
height_cm TYPE i,
|
||||
hazard TYPE abap_bool,
|
||||
END OF ty_vehicle.
|
||||
|
||||
METHODS check_vehicle
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS check_loading
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
iv_free_weight TYPE i
|
||||
iv_free_length TYPE i
|
||||
iv_max_height TYPE i
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS raise_reason
|
||||
IMPORTING iv_reason TYPE {{p}}if_ferry_reason=>ty_reason
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS is_plate_valid
|
||||
IMPORTING iv_plate TYPE ty_plate
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
|
||||
METHODS is_category_valid
|
||||
IMPORTING iv_category TYPE ty_category
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}ferry_load_check IMPLEMENTATION.
|
||||
METHOD check_vehicle.
|
||||
IF is_plate_valid( is_vehicle-plate ) = abap_true.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-plate ).
|
||||
ENDIF.
|
||||
IF is_category_valid( is_vehicle-category ) = abap_false.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-category ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg <= 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm <= 0 OR is_vehicle-height_cm <= 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-size ).
|
||||
ENDIF.
|
||||
IF is_vehicle-hazard = abap_true AND is_vehicle-category <> 'T'.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-hazard ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_loading.
|
||||
check_vehicle( is_vehicle ).
|
||||
IF is_vehicle-height_cm > iv_max_height.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-height ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg > iv_free_weight.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight_limit ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm > iv_free_length.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-length_limit ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD raise_reason.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_ferry_error
|
||||
EXPORTING
|
||||
iv_reason = iv_reason.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_plate_valid.
|
||||
DATA lv_plate TYPE string.
|
||||
lv_plate = to_upper( iv_plate ).
|
||||
REPLACE ALL OCCURRENCES OF ` ` IN lv_plate WITH ``.
|
||||
rv_valid = xsdbool( lv_plate IS NOT INITIAL
|
||||
AND lv_plate CO 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_category_valid.
|
||||
rv_valid = xsdbool( iv_category = 'C' OR iv_category = 'V'
|
||||
OR iv_category = 'T' OR iv_category = 'B' ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
92
tasks_gen/eval/G0127/faulty/m1_ferry_load_check.clas.abap
Normal file
92
tasks_gen/eval/G0127/faulty/m1_ferry_load_check.clas.abap
Normal file
@@ -0,0 +1,92 @@
|
||||
CLASS {{p}}ferry_load_check DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_plate TYPE c LENGTH 10.
|
||||
TYPES ty_category TYPE c LENGTH 1.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_vehicle,
|
||||
plate TYPE ty_plate,
|
||||
category TYPE ty_category,
|
||||
weight_kg TYPE i,
|
||||
length_cm TYPE i,
|
||||
height_cm TYPE i,
|
||||
hazard TYPE abap_bool,
|
||||
END OF ty_vehicle.
|
||||
|
||||
METHODS check_vehicle
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS check_loading
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
iv_free_weight TYPE i
|
||||
iv_free_length TYPE i
|
||||
iv_max_height TYPE i
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS raise_reason
|
||||
IMPORTING iv_reason TYPE {{p}}if_ferry_reason=>ty_reason
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS is_plate_valid
|
||||
IMPORTING iv_plate TYPE ty_plate
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
|
||||
METHODS is_category_valid
|
||||
IMPORTING iv_category TYPE ty_category
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}ferry_load_check IMPLEMENTATION.
|
||||
METHOD check_vehicle.
|
||||
IF is_plate_valid( is_vehicle-plate ) = abap_false.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-plate ).
|
||||
ENDIF.
|
||||
IF is_category_valid( is_vehicle-category ) <> abap_false.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-category ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg <= 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm <= 0 OR is_vehicle-height_cm <= 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-size ).
|
||||
ENDIF.
|
||||
IF is_vehicle-hazard = abap_true AND is_vehicle-category <> 'T'.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-hazard ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_loading.
|
||||
check_vehicle( is_vehicle ).
|
||||
IF is_vehicle-height_cm > iv_max_height.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-height ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg > iv_free_weight.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight_limit ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm > iv_free_length.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-length_limit ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD raise_reason.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_ferry_error
|
||||
EXPORTING
|
||||
iv_reason = iv_reason.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_plate_valid.
|
||||
DATA lv_plate TYPE string.
|
||||
lv_plate = to_upper( iv_plate ).
|
||||
REPLACE ALL OCCURRENCES OF ` ` IN lv_plate WITH ``.
|
||||
rv_valid = xsdbool( lv_plate IS NOT INITIAL
|
||||
AND lv_plate CO 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_category_valid.
|
||||
rv_valid = xsdbool( iv_category = 'C' OR iv_category = 'V'
|
||||
OR iv_category = 'T' OR iv_category = 'B' ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
92
tasks_gen/eval/G0127/faulty/m2_ferry_load_check.clas.abap
Normal file
92
tasks_gen/eval/G0127/faulty/m2_ferry_load_check.clas.abap
Normal file
@@ -0,0 +1,92 @@
|
||||
CLASS {{p}}ferry_load_check DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_plate TYPE c LENGTH 10.
|
||||
TYPES ty_category TYPE c LENGTH 1.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_vehicle,
|
||||
plate TYPE ty_plate,
|
||||
category TYPE ty_category,
|
||||
weight_kg TYPE i,
|
||||
length_cm TYPE i,
|
||||
height_cm TYPE i,
|
||||
hazard TYPE abap_bool,
|
||||
END OF ty_vehicle.
|
||||
|
||||
METHODS check_vehicle
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS check_loading
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
iv_free_weight TYPE i
|
||||
iv_free_length TYPE i
|
||||
iv_max_height TYPE i
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS raise_reason
|
||||
IMPORTING iv_reason TYPE {{p}}if_ferry_reason=>ty_reason
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS is_plate_valid
|
||||
IMPORTING iv_plate TYPE ty_plate
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
|
||||
METHODS is_category_valid
|
||||
IMPORTING iv_category TYPE ty_category
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}ferry_load_check IMPLEMENTATION.
|
||||
METHOD check_vehicle.
|
||||
IF is_plate_valid( is_vehicle-plate ) = abap_false.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-plate ).
|
||||
ENDIF.
|
||||
IF is_category_valid( is_vehicle-category ) = abap_false.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-category ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg > 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm <= 0 OR is_vehicle-height_cm <= 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-size ).
|
||||
ENDIF.
|
||||
IF is_vehicle-hazard = abap_true AND is_vehicle-category <> 'T'.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-hazard ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_loading.
|
||||
check_vehicle( is_vehicle ).
|
||||
IF is_vehicle-height_cm > iv_max_height.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-height ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg > iv_free_weight.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight_limit ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm > iv_free_length.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-length_limit ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD raise_reason.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_ferry_error
|
||||
EXPORTING
|
||||
iv_reason = iv_reason.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_plate_valid.
|
||||
DATA lv_plate TYPE string.
|
||||
lv_plate = to_upper( iv_plate ).
|
||||
REPLACE ALL OCCURRENCES OF ` ` IN lv_plate WITH ``.
|
||||
rv_valid = xsdbool( lv_plate IS NOT INITIAL
|
||||
AND lv_plate CO 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_category_valid.
|
||||
rv_valid = xsdbool( iv_category = 'C' OR iv_category = 'V'
|
||||
OR iv_category = 'T' OR iv_category = 'B' ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
92
tasks_gen/eval/G0127/faulty/m3_ferry_load_check.clas.abap
Normal file
92
tasks_gen/eval/G0127/faulty/m3_ferry_load_check.clas.abap
Normal file
@@ -0,0 +1,92 @@
|
||||
CLASS {{p}}ferry_load_check DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_plate TYPE c LENGTH 10.
|
||||
TYPES ty_category TYPE c LENGTH 1.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_vehicle,
|
||||
plate TYPE ty_plate,
|
||||
category TYPE ty_category,
|
||||
weight_kg TYPE i,
|
||||
length_cm TYPE i,
|
||||
height_cm TYPE i,
|
||||
hazard TYPE abap_bool,
|
||||
END OF ty_vehicle.
|
||||
|
||||
METHODS check_vehicle
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS check_loading
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
iv_free_weight TYPE i
|
||||
iv_free_length TYPE i
|
||||
iv_max_height TYPE i
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS raise_reason
|
||||
IMPORTING iv_reason TYPE {{p}}if_ferry_reason=>ty_reason
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS is_plate_valid
|
||||
IMPORTING iv_plate TYPE ty_plate
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
|
||||
METHODS is_category_valid
|
||||
IMPORTING iv_category TYPE ty_category
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}ferry_load_check IMPLEMENTATION.
|
||||
METHOD check_vehicle.
|
||||
IF is_plate_valid( is_vehicle-plate ) = abap_false.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-plate ).
|
||||
ENDIF.
|
||||
IF is_category_valid( is_vehicle-category ) = abap_false.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-category ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg <= 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm <= 0 AND is_vehicle-height_cm <= 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-size ).
|
||||
ENDIF.
|
||||
IF is_vehicle-hazard = abap_true AND is_vehicle-category <> 'T'.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-hazard ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_loading.
|
||||
check_vehicle( is_vehicle ).
|
||||
IF is_vehicle-height_cm > iv_max_height.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-height ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg > iv_free_weight.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight_limit ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm > iv_free_length.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-length_limit ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD raise_reason.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_ferry_error
|
||||
EXPORTING
|
||||
iv_reason = iv_reason.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_plate_valid.
|
||||
DATA lv_plate TYPE string.
|
||||
lv_plate = to_upper( iv_plate ).
|
||||
REPLACE ALL OCCURRENCES OF ` ` IN lv_plate WITH ``.
|
||||
rv_valid = xsdbool( lv_plate IS NOT INITIAL
|
||||
AND lv_plate CO 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_category_valid.
|
||||
rv_valid = xsdbool( iv_category = 'C' OR iv_category = 'V'
|
||||
OR iv_category = 'T' OR iv_category = 'B' ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
92
tasks_gen/eval/G0127/faulty/m4_ferry_load_check.clas.abap
Normal file
92
tasks_gen/eval/G0127/faulty/m4_ferry_load_check.clas.abap
Normal file
@@ -0,0 +1,92 @@
|
||||
CLASS {{p}}ferry_load_check DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_plate TYPE c LENGTH 10.
|
||||
TYPES ty_category TYPE c LENGTH 1.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_vehicle,
|
||||
plate TYPE ty_plate,
|
||||
category TYPE ty_category,
|
||||
weight_kg TYPE i,
|
||||
length_cm TYPE i,
|
||||
height_cm TYPE i,
|
||||
hazard TYPE abap_bool,
|
||||
END OF ty_vehicle.
|
||||
|
||||
METHODS check_vehicle
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS check_loading
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
iv_free_weight TYPE i
|
||||
iv_free_length TYPE i
|
||||
iv_max_height TYPE i
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS raise_reason
|
||||
IMPORTING iv_reason TYPE {{p}}if_ferry_reason=>ty_reason
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS is_plate_valid
|
||||
IMPORTING iv_plate TYPE ty_plate
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
|
||||
METHODS is_category_valid
|
||||
IMPORTING iv_category TYPE ty_category
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}ferry_load_check IMPLEMENTATION.
|
||||
METHOD check_vehicle.
|
||||
IF is_plate_valid( is_vehicle-plate ) = abap_false.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-plate ).
|
||||
ENDIF.
|
||||
IF is_category_valid( is_vehicle-category ) = abap_false.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-category ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg <= 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm <= 0 OR is_vehicle-height_cm <= 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-size ).
|
||||
ENDIF.
|
||||
IF is_vehicle-hazard = abap_true AND is_vehicle-category = 'T'.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-hazard ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_loading.
|
||||
check_vehicle( is_vehicle ).
|
||||
IF is_vehicle-height_cm > iv_max_height.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-height ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg > iv_free_weight.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight_limit ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm > iv_free_length.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-length_limit ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD raise_reason.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_ferry_error
|
||||
EXPORTING
|
||||
iv_reason = iv_reason.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_plate_valid.
|
||||
DATA lv_plate TYPE string.
|
||||
lv_plate = to_upper( iv_plate ).
|
||||
REPLACE ALL OCCURRENCES OF ` ` IN lv_plate WITH ``.
|
||||
rv_valid = xsdbool( lv_plate IS NOT INITIAL
|
||||
AND lv_plate CO 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_category_valid.
|
||||
rv_valid = xsdbool( iv_category = 'C' OR iv_category = 'V'
|
||||
OR iv_category = 'T' OR iv_category = 'B' ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
254
tasks_gen/eval/G0127/files/hidden/t02_hidden.clas.abap
Normal file
254
tasks_gen/eval/G0127/files/hidden/t02_hidden.clas.abap
Normal file
@@ -0,0 +1,254 @@
|
||||
CLASS {{p}}t02_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
||||
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO {{p}}ferry_load_check.
|
||||
DATA mo_error TYPE REF TO {{p}}cx_ferry_error.
|
||||
METHODS setup.
|
||||
METHODS valid_car_is_ok FOR TESTING.
|
||||
METHODS valid_truck_hazard_ok FOR TESTING.
|
||||
METHODS empty_plate_rejected FOR TESTING.
|
||||
METHODS bad_plate_char_rejected FOR TESTING.
|
||||
METHODS unknown_category_rejected FOR TESTING.
|
||||
METHODS zero_weight_rejected FOR TESTING.
|
||||
METHODS zero_size_rejected FOR TESTING.
|
||||
METHODS hazard_in_car_rejected FOR TESTING.
|
||||
METHODS too_high_rejected FOR TESTING.
|
||||
METHODS weight_limit_rejected FOR TESTING.
|
||||
METHODS length_limit_rejected FOR TESTING.
|
||||
METHODS plate_error_wins FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}t02_hidden IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}ferry_load_check( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD valid_car_is_ok.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'b ab 1234'
|
||||
category = 'C'
|
||||
weight_kg = 1500
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_loading( is_vehicle = ls_vehicle
|
||||
iv_free_weight = 5000
|
||||
iv_free_length = 2000
|
||||
iv_max_height = 200 ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>fail( msg = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD valid_truck_hazard_ok.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'HH-TR 900'
|
||||
category = 'T'
|
||||
weight_kg = 12000
|
||||
length_cm = 1200
|
||||
height_cm = 380
|
||||
hazard = abap_true ).
|
||||
TRY.
|
||||
mo_cut->check_loading( is_vehicle = ls_vehicle
|
||||
iv_free_weight = 20000
|
||||
iv_free_length = 5000
|
||||
iv_max_height = 400 ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>fail( msg = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD empty_plate_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = space
|
||||
category = 'C'
|
||||
weight_kg = 1500
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_vehicle( is_vehicle = ls_vehicle ).
|
||||
cl_abap_unit_assert=>fail( msg = 'empty plate accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-plate
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD bad_plate_char_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'B-AB#123'
|
||||
category = 'C'
|
||||
weight_kg = 1500
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_vehicle( is_vehicle = ls_vehicle ).
|
||||
cl_abap_unit_assert=>fail( msg = 'bad plate accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-plate
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD unknown_category_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'B-AB 1234'
|
||||
category = 'X'
|
||||
weight_kg = 1500
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_vehicle( is_vehicle = ls_vehicle ).
|
||||
cl_abap_unit_assert=>fail( msg = 'unknown category accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-category
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zero_weight_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'B-AB 1234'
|
||||
category = 'C'
|
||||
weight_kg = 0
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_vehicle( is_vehicle = ls_vehicle ).
|
||||
cl_abap_unit_assert=>fail( msg = 'zero weight accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-weight
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zero_size_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'B-AB 1234'
|
||||
category = 'C'
|
||||
weight_kg = 1500
|
||||
length_cm = 0
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_vehicle( is_vehicle = ls_vehicle ).
|
||||
cl_abap_unit_assert=>fail( msg = 'zero size accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-size
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD hazard_in_car_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'B-AB 1234'
|
||||
category = 'C'
|
||||
weight_kg = 1500
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_true ).
|
||||
TRY.
|
||||
mo_cut->check_vehicle( is_vehicle = ls_vehicle ).
|
||||
cl_abap_unit_assert=>fail( msg = 'hazard in car accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-hazard
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD too_high_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'B-AB 1234'
|
||||
category = 'C'
|
||||
weight_kg = 1500
|
||||
length_cm = 450
|
||||
height_cm = 250
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_loading( is_vehicle = ls_vehicle
|
||||
iv_free_weight = 5000
|
||||
iv_free_length = 2000
|
||||
iv_max_height = 200 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'too high accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-height
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD weight_limit_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'B-AB 1234'
|
||||
category = 'C'
|
||||
weight_kg = 6000
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_loading( is_vehicle = ls_vehicle
|
||||
iv_free_weight = 5000
|
||||
iv_free_length = 2000
|
||||
iv_max_height = 200 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'weight limit accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-weight_limit
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD length_limit_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'B-AB 1234'
|
||||
category = 'C'
|
||||
weight_kg = 1500
|
||||
length_cm = 2500
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_loading( is_vehicle = ls_vehicle
|
||||
iv_free_weight = 5000
|
||||
iv_free_length = 2000
|
||||
iv_max_height = 200 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'length limit accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-length_limit
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD plate_error_wins.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = space
|
||||
category = 'C'
|
||||
weight_kg = 9999
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_loading( is_vehicle = ls_vehicle
|
||||
iv_free_weight = 1000
|
||||
iv_free_length = 2000
|
||||
iv_max_height = 200 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'empty plate accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-plate
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
@@ -0,0 +1,15 @@
|
||||
CLASS {{p}}cx_ferry_error DEFINITION PUBLIC INHERITING FROM cx_static_check FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
DATA reason TYPE {{p}}if_ferry_reason=>ty_reason READ-ONLY.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING iv_reason TYPE {{p}}if_ferry_reason=>ty_reason.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}cx_ferry_error IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
reason = iv_reason.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
@@ -0,0 +1,92 @@
|
||||
CLASS {{p}}ferry_load_check DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_plate TYPE c LENGTH 10.
|
||||
TYPES ty_category TYPE c LENGTH 1.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_vehicle,
|
||||
plate TYPE ty_plate,
|
||||
category TYPE ty_category,
|
||||
weight_kg TYPE i,
|
||||
length_cm TYPE i,
|
||||
height_cm TYPE i,
|
||||
hazard TYPE abap_bool,
|
||||
END OF ty_vehicle.
|
||||
|
||||
METHODS check_vehicle
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS check_loading
|
||||
IMPORTING is_vehicle TYPE ty_vehicle
|
||||
iv_free_weight TYPE i
|
||||
iv_free_length TYPE i
|
||||
iv_max_height TYPE i
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS raise_reason
|
||||
IMPORTING iv_reason TYPE {{p}}if_ferry_reason=>ty_reason
|
||||
RAISING {{p}}cx_ferry_error.
|
||||
|
||||
METHODS is_plate_valid
|
||||
IMPORTING iv_plate TYPE ty_plate
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
|
||||
METHODS is_category_valid
|
||||
IMPORTING iv_category TYPE ty_category
|
||||
RETURNING VALUE(rv_valid) TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}ferry_load_check IMPLEMENTATION.
|
||||
METHOD check_vehicle.
|
||||
IF is_plate_valid( is_vehicle-plate ) = abap_false.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-plate ).
|
||||
ENDIF.
|
||||
IF is_category_valid( is_vehicle-category ) = abap_false.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-category ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg <= 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm <= 0 OR is_vehicle-height_cm <= 0.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-size ).
|
||||
ENDIF.
|
||||
IF is_vehicle-hazard = abap_true AND is_vehicle-category <> 'T'.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-hazard ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_loading.
|
||||
check_vehicle( is_vehicle ).
|
||||
IF is_vehicle-height_cm > iv_max_height.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-height ).
|
||||
ENDIF.
|
||||
IF is_vehicle-weight_kg > iv_free_weight.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-weight_limit ).
|
||||
ENDIF.
|
||||
IF is_vehicle-length_cm > iv_free_length.
|
||||
raise_reason( {{p}}if_ferry_reason=>c_reason-length_limit ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD raise_reason.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_ferry_error
|
||||
EXPORTING
|
||||
iv_reason = iv_reason.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_plate_valid.
|
||||
DATA lv_plate TYPE string.
|
||||
lv_plate = to_upper( iv_plate ).
|
||||
REPLACE ALL OCCURRENCES OF ` ` IN lv_plate WITH ``.
|
||||
rv_valid = xsdbool( lv_plate IS NOT INITIAL
|
||||
AND lv_plate CO 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_category_valid.
|
||||
rv_valid = xsdbool( iv_category = 'C' OR iv_category = 'V'
|
||||
OR iv_category = 'T' OR iv_category = 'B' ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
@@ -0,0 +1,114 @@
|
||||
CLASS ltc_ferry_load_check DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO {{p}}ferry_load_check.
|
||||
DATA mo_error TYPE REF TO {{p}}cx_ferry_error.
|
||||
METHODS setup.
|
||||
METHODS valid_car_is_ok FOR TESTING.
|
||||
METHODS empty_plate_rejected FOR TESTING.
|
||||
METHODS hazard_in_car_rejected FOR TESTING.
|
||||
METHODS weight_limit_rejected FOR TESTING.
|
||||
METHODS plate_error_wins FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltc_ferry_load_check IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}ferry_load_check( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD valid_car_is_ok.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'B-AB 1234'
|
||||
category = 'C'
|
||||
weight_kg = 1500
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_loading( is_vehicle = ls_vehicle
|
||||
iv_free_weight = 5000
|
||||
iv_free_length = 2000
|
||||
iv_max_height = 200 ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>fail( msg = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD empty_plate_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = space
|
||||
category = 'C'
|
||||
weight_kg = 1500
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_vehicle( is_vehicle = ls_vehicle ).
|
||||
cl_abap_unit_assert=>fail( msg = 'empty plate accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-plate
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD hazard_in_car_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'B-AB 1234'
|
||||
category = 'C'
|
||||
weight_kg = 1500
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_true ).
|
||||
TRY.
|
||||
mo_cut->check_vehicle( is_vehicle = ls_vehicle ).
|
||||
cl_abap_unit_assert=>fail( msg = 'hazard in car accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-hazard
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD weight_limit_rejected.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = 'B-AB 1234'
|
||||
category = 'C'
|
||||
weight_kg = 6000
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_loading( is_vehicle = ls_vehicle
|
||||
iv_free_weight = 5000
|
||||
iv_free_length = 2000
|
||||
iv_max_height = 200 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'weight limit accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-weight_limit
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD plate_error_wins.
|
||||
DATA(ls_vehicle) = VALUE {{p}}ferry_load_check=>ty_vehicle(
|
||||
plate = space
|
||||
category = 'C'
|
||||
weight_kg = 9999
|
||||
length_cm = 450
|
||||
height_cm = 150
|
||||
hazard = abap_false ).
|
||||
TRY.
|
||||
mo_cut->check_loading( is_vehicle = ls_vehicle
|
||||
iv_free_weight = 1000
|
||||
iv_free_length = 2000
|
||||
iv_max_height = 200 ).
|
||||
cl_abap_unit_assert=>fail( msg = 'empty plate accepted' ).
|
||||
CATCH {{p}}cx_ferry_error INTO mo_error.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = {{p}}if_ferry_reason=>c_reason-plate
|
||||
act = mo_error->reason ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
14
tasks_gen/eval/G0127/files/seed/if_ferry_reason.intf.abap
Normal file
14
tasks_gen/eval/G0127/files/seed/if_ferry_reason.intf.abap
Normal file
@@ -0,0 +1,14 @@
|
||||
INTERFACE {{p}}if_ferry_reason PUBLIC.
|
||||
TYPES ty_reason TYPE c LENGTH 12.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_reason,
|
||||
plate TYPE ty_reason VALUE 'PLATE',
|
||||
category TYPE ty_reason VALUE 'CATEGORY',
|
||||
weight TYPE ty_reason VALUE 'WEIGHT',
|
||||
size TYPE ty_reason VALUE 'SIZE',
|
||||
hazard TYPE ty_reason VALUE 'HAZARD',
|
||||
height TYPE ty_reason VALUE 'HEIGHT',
|
||||
weight_limit TYPE ty_reason VALUE 'WEIGHT_LIMIT',
|
||||
length_limit TYPE ty_reason VALUE 'LENGTH_LIMIT',
|
||||
END OF c_reason.
|
||||
ENDINTERFACE.
|
||||
29
tasks_gen/eval/G0127/generation.json
Normal file
29
tasks_gen/eval/G0127/generation.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"id": "G0127",
|
||||
"pool": "eval",
|
||||
"object_type": "CLAS",
|
||||
"category": "D",
|
||||
"attempts": [
|
||||
{
|
||||
"stage": "bundle",
|
||||
"errors": [
|
||||
"reference/ferry_load_check.clas.abap line 29: syntax error for release v758 (abaplint): Statement does not exist in the configured ABAP version(or a parser error), \"METHODS\"",
|
||||
"reference/ferry_load_check.clas.abap line 33: syntax error for release v758 (abaplint): Statement does not exist in the configured ABAP version(or a parser error), \"METHODS\""
|
||||
],
|
||||
"by_check": {
|
||||
"abaplint": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"stage": "validate",
|
||||
"oracle": 100.0,
|
||||
"null": 0,
|
||||
"mutation": {
|
||||
"valid": 5,
|
||||
"killed": 5,
|
||||
"ok": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"accepted": true
|
||||
}
|
||||
81
tasks_gen/eval/G0127/mutation.json
Normal file
81
tasks_gen/eval/G0127/mutation.json
Normal file
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"task": "G0127",
|
||||
"mutants": [
|
||||
{
|
||||
"object": "{{P}}FERRY_LOAD_CHECK",
|
||||
"mutant": "line 44: abap_false -> abap_true (bool)",
|
||||
"status": "killed",
|
||||
"hidden": "0/12",
|
||||
"failed_tests": [
|
||||
"BAD_PLATE_CHAR_REJECTED",
|
||||
"EMPTY_PLATE_REJECTED",
|
||||
"HAZARD_IN_CAR_REJECTED",
|
||||
"LENGTH_LIMIT_REJECTED",
|
||||
"PLATE_ERROR_WINS",
|
||||
"TOO_HIGH_REJECTED",
|
||||
"UNKNOWN_CATEGORY_REJECTED",
|
||||
"VALID_CAR_IS_OK",
|
||||
"VALID_TRUCK_HAZARD_OK",
|
||||
"WEIGHT_LIMIT_REJECTED",
|
||||
"ZERO_SIZE_REJECTED",
|
||||
"ZERO_WEIGHT_REJECTED"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}FERRY_LOAD_CHECK",
|
||||
"mutant": "line 47: = -> <> (eq)",
|
||||
"status": "killed",
|
||||
"hidden": "3/12",
|
||||
"failed_tests": [
|
||||
"HAZARD_IN_CAR_REJECTED",
|
||||
"LENGTH_LIMIT_REJECTED",
|
||||
"TOO_HIGH_REJECTED",
|
||||
"UNKNOWN_CATEGORY_REJECTED",
|
||||
"VALID_CAR_IS_OK",
|
||||
"VALID_TRUCK_HAZARD_OK",
|
||||
"WEIGHT_LIMIT_REJECTED",
|
||||
"ZERO_SIZE_REJECTED",
|
||||
"ZERO_WEIGHT_REJECTED"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}FERRY_LOAD_CHECK",
|
||||
"mutant": "line 50: <= -> > (rel)",
|
||||
"status": "killed",
|
||||
"hidden": "4/12",
|
||||
"failed_tests": [
|
||||
"HAZARD_IN_CAR_REJECTED",
|
||||
"LENGTH_LIMIT_REJECTED",
|
||||
"TOO_HIGH_REJECTED",
|
||||
"VALID_CAR_IS_OK",
|
||||
"VALID_TRUCK_HAZARD_OK",
|
||||
"WEIGHT_LIMIT_REJECTED",
|
||||
"ZERO_SIZE_REJECTED",
|
||||
"ZERO_WEIGHT_REJECTED"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}FERRY_LOAD_CHECK",
|
||||
"mutant": "line 53: OR -> AND (logic)",
|
||||
"status": "killed",
|
||||
"hidden": "11/12",
|
||||
"failed_tests": [
|
||||
"ZERO_SIZE_REJECTED"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}FERRY_LOAD_CHECK",
|
||||
"mutant": "line 56: <> -> = (rel)",
|
||||
"status": "killed",
|
||||
"hidden": "10/12",
|
||||
"failed_tests": [
|
||||
"HAZARD_IN_CAR_REJECTED",
|
||||
"VALID_TRUCK_HAZARD_OK"
|
||||
]
|
||||
}
|
||||
],
|
||||
"valid": 5,
|
||||
"killed": 5,
|
||||
"kill_rate": 1.0,
|
||||
"ok": true
|
||||
}
|
||||
69
tasks_gen/eval/G0127/spec.md
Normal file
69
tasks_gen/eval/G0127/spec.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# 1. Goal
|
||||
Check if a vehicle may board a ferry crossing. A loading planner calls the check
|
||||
before it adds the vehicle to the loading list. The check reports the first reason
|
||||
that stops the loading.
|
||||
|
||||
# 2. Open questions
|
||||
None.
|
||||
|
||||
# 3. Context
|
||||
- The interface {{P}}IF_FERRY_REASON exists in package $TMP. It is active.
|
||||
- The interface has the type TY_REASON (CHAR 12) and the constant structure
|
||||
C_REASON with the components PLATE, CATEGORY, WEIGHT, SIZE, HAZARD, HEIGHT,
|
||||
WEIGHT_LIMIT and LENGTH_LIMIT.
|
||||
- A vehicle has a plate, a category, a weight, a length, a height and a hazard
|
||||
flag.
|
||||
|
||||
# 4. Contract
|
||||
- Create the class {{P}}CX_FERRY_ERROR in package $TMP.
|
||||
- The class is public, final and inherits from CX_STATIC_CHECK.
|
||||
- The class has the public read-only attribute REASON of type
|
||||
{{P}}IF_FERRY_REASON=>TY_REASON.
|
||||
- The class has a public constructor with the importing parameter IV_REASON of
|
||||
type {{P}}IF_FERRY_REASON=>TY_REASON. The constructor stores IV_REASON in
|
||||
REASON.
|
||||
- Do not add other public components.
|
||||
- Create the class {{P}}FERRY_LOAD_CHECK in package $TMP.
|
||||
- The class is public, final and has a public constructor without parameters.
|
||||
- The class has the public type TY_VEHICLE with the components PLATE (type c
|
||||
length 10), CATEGORY (type c length 1), WEIGHT_KG (type i), LENGTH_CM (type
|
||||
i), HEIGHT_CM (type i) and HAZARD (type abap_bool).
|
||||
- The class has the public method CHECK_VEHICLE with the importing parameter
|
||||
IS_VEHICLE of type TY_VEHICLE and the addition RAISING {{P}}CX_FERRY_ERROR.
|
||||
- The class has the public method CHECK_LOADING with the importing parameters
|
||||
IS_VEHICLE of type TY_VEHICLE, IV_FREE_WEIGHT of type i, IV_FREE_LENGTH of
|
||||
type i and IV_MAX_HEIGHT of type i, and the addition RAISING
|
||||
{{P}}CX_FERRY_ERROR.
|
||||
- Do not add other public methods.
|
||||
|
||||
# 5. Business rules
|
||||
CHECK_VEHICLE applies the rules 1 to 5 in this sequence. CHECK_LOADING first calls
|
||||
CHECK_VEHICLE and then applies the rules 6 to 8 in this sequence. The first rule
|
||||
that fails raises the exception {{P}}CX_FERRY_ERROR with the reason of the rule.
|
||||
1. Plate: remove all spaces from the plate and convert the letters to upper case.
|
||||
If the result is empty or contains a character that is not a letter A to Z, a
|
||||
digit 0 to 9 or a hyphen, the reason is PLATE.
|
||||
2. Category: the category must be C, V, T or B. Else the reason is CATEGORY.
|
||||
3. Weight: the weight must be greater than 0. Else the reason is WEIGHT.
|
||||
4. Size: the length and the height must both be greater than 0. Else the reason
|
||||
is SIZE.
|
||||
5. Hazard: if the hazard flag is true and the category is not T, the reason is
|
||||
HAZARD.
|
||||
6. Height: if the height of the vehicle is greater than IV_MAX_HEIGHT, the reason
|
||||
is HEIGHT.
|
||||
7. Weight limit: if the weight of the vehicle is greater than IV_FREE_WEIGHT, the
|
||||
reason is WEIGHT_LIMIT.
|
||||
8. Length limit: if the length of the vehicle is greater than IV_FREE_LENGTH, the
|
||||
reason is LENGTH_LIMIT.
|
||||
If no rule fails, the method returns without an exception.
|
||||
|
||||
# 6. Constraints
|
||||
- Release target: 8.16.
|
||||
- Coding standards: Clean ABAP. Method length below 40 statements. No global
|
||||
variables. No comment that restates the code.
|
||||
- Out of scope: do not change {{P}}IF_FERRY_REASON.
|
||||
|
||||
# 7. Acceptance
|
||||
- The classes are active and have no syntax error.
|
||||
- The hidden tests pass.
|
||||
- Write your own ABAP Unit tests for {{P}}FERRY_LOAD_CHECK.
|
||||
60
tasks_gen/eval/G0127/task.json
Normal file
60
tasks_gen/eval/G0127/task.json
Normal file
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"id": "G0127",
|
||||
"category": "D",
|
||||
"object_type": "CLAS",
|
||||
"difficulty": 2,
|
||||
"release_target": "v816",
|
||||
"expected_outcome": "implement",
|
||||
"budget": {
|
||||
"max_tool_calls": 40,
|
||||
"max_activations": 10
|
||||
},
|
||||
"seed": [
|
||||
{
|
||||
"type": "INTF",
|
||||
"name": "{{P}}IF_FERRY_REASON",
|
||||
"file": "files/seed/if_ferry_reason.intf.abap",
|
||||
"description": "Reason type and reason codes for the ferry loading check"
|
||||
}
|
||||
],
|
||||
"contract": [
|
||||
{
|
||||
"type": "CLAS",
|
||||
"name": "{{P}}CX_FERRY_ERROR"
|
||||
},
|
||||
{
|
||||
"type": "CLAS",
|
||||
"name": "{{P}}FERRY_LOAD_CHECK"
|
||||
}
|
||||
],
|
||||
"out_of_scope": [
|
||||
"{{P}}IF_FERRY_REASON"
|
||||
],
|
||||
"hidden_tests": [
|
||||
{
|
||||
"type": "CLAS",
|
||||
"name": "{{P}}T02_HIDDEN",
|
||||
"file": "files/hidden/t02_hidden.clas.abap",
|
||||
"description": "T02 hidden tests"
|
||||
}
|
||||
],
|
||||
"reference": [
|
||||
{
|
||||
"type": "CLAS",
|
||||
"name": "{{P}}CX_FERRY_ERROR",
|
||||
"file": "files/reference/cx_ferry_error.clas.abap",
|
||||
"description": "Class-based exception that carries the reason"
|
||||
},
|
||||
{
|
||||
"type": "CLAS",
|
||||
"name": "{{P}}FERRY_LOAD_CHECK",
|
||||
"file": "files/reference/ferry_load_check.clas.abap",
|
||||
"description": "Ferry loading check",
|
||||
"testclasses_file": "files/reference/ferry_load_check.testclasses.abap"
|
||||
}
|
||||
],
|
||||
"craft_checks": [
|
||||
"method_length",
|
||||
"no_global_variables"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user