Files
abap-llm/tasks_gen/train/G1940/hidden/lift_hidden.clas.abap
2026-10-05 22:08:59 +02:00

140 lines
4.7 KiB
ABAP

CLASS {{p}}lift_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS make_plan
IMPORTING iv_crane TYPE string DEFAULT 'K-7'
iv_load TYPE decfloat34 DEFAULT 1000
iv_capacity TYPE decfloat34 DEFAULT 1000
iv_wind TYPE decfloat34 DEFAULT 20
RETURNING VALUE(rs_plan) TYPE {{p}}lift_check=>ty_lift_plan.
METHODS check_plan
IMPORTING iv_crane TYPE string DEFAULT 'K-7'
iv_load TYPE decfloat34 DEFAULT 1000
iv_capacity TYPE decfloat34 DEFAULT 1000
iv_wind TYPE decfloat34 DEFAULT 20
EXPORTING ev_text TYPE string.
METHODS msg_001_text FOR TESTING.
METHODS msg_002_text FOR TESTING.
METHODS msg_003_text FOR TESTING.
METHODS msg_004_text FOR TESTING.
METHODS msg_005_text FOR TESTING.
METHODS no_crane_raises FOR TESTING.
METHODS overload_raises FOR TESTING.
METHODS wind_raises FOR TESTING.
METHODS crane_rule_first FOR TESTING.
METHODS wind_limit_ok FOR TESTING.
METHODS valid_plan_passes FOR TESTING.
ENDCLASS.
CLASS {{p}}lift_hidden IMPLEMENTATION.
METHOD make_plan.
rs_plan = VALUE #( plan_id = 'L-100'
crane_id = iv_crane
load_kg = iv_load
capacity_kg = iv_capacity
wind_kmh = iv_wind ).
ENDMETHOD.
METHOD check_plan.
CLEAR ev_text.
DATA(ls_plan) = make_plan( iv_crane = iv_crane
iv_load = iv_load
iv_capacity = iv_capacity
iv_wind = iv_wind ).
DATA(lo_check) = NEW {{p}}lift_check( ).
TRY.
lo_check->check_lift_plan( ls_plan ).
CATCH {{p}}cx_crane_error INTO DATA(lo_error).
ev_text = lo_error->get_message_text( ).
ENDTRY.
ENDMETHOD.
METHOD msg_001_text.
DATA lv_text TYPE string.
MESSAGE ID '{{P}}MSG_CRANE' TYPE 'E' NUMBER '001' WITH 'L-100' INTO lv_text.
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 has no crane'
act = lv_text ).
ENDMETHOD.
METHOD msg_002_text.
DATA lv_text TYPE string.
MESSAGE ID '{{P}}MSG_CRANE' TYPE 'E' NUMBER '002' WITH 'L-100' 'K-7' INTO lv_text.
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 is too heavy for crane K-7'
act = lv_text ).
ENDMETHOD.
METHOD msg_003_text.
DATA lv_text TYPE string.
MESSAGE ID '{{P}}MSG_CRANE' TYPE 'E' NUMBER '003' WITH 'L-100' INTO lv_text.
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 is blocked because of wind'
act = lv_text ).
ENDMETHOD.
METHOD msg_004_text.
DATA lv_text TYPE string.
MESSAGE ID '{{P}}MSG_CRANE' TYPE 'W' NUMBER '004' WITH 'L-100' INTO lv_text.
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 is near the load limit'
act = lv_text ).
ENDMETHOD.
METHOD msg_005_text.
DATA lv_text TYPE string.
MESSAGE ID '{{P}}MSG_CRANE' TYPE 'I' NUMBER '005' WITH 'L-100' INTO lv_text.
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 is approved'
act = lv_text ).
ENDMETHOD.
METHOD no_crane_raises.
check_plan( EXPORTING iv_crane = ''
IMPORTING ev_text = DATA(lv_text) ).
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 has no crane'
act = lv_text ).
ENDMETHOD.
METHOD overload_raises.
check_plan( EXPORTING iv_load = 1200 iv_capacity = 1000
IMPORTING ev_text = DATA(lv_text) ).
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 is too heavy for crane K-7'
act = lv_text ).
ENDMETHOD.
METHOD wind_raises.
check_plan( EXPORTING iv_wind = 75
IMPORTING ev_text = DATA(lv_text) ).
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 is blocked because of wind'
act = lv_text ).
ENDMETHOD.
METHOD crane_rule_first.
check_plan( EXPORTING iv_crane = '' iv_load = 1200 iv_capacity = 1000 iv_wind = 90
IMPORTING ev_text = DATA(lv_text) ).
cl_abap_unit_assert=>assert_equals(
exp = 'Lift plan L-100 has no crane'
act = lv_text ).
ENDMETHOD.
METHOD wind_limit_ok.
check_plan( EXPORTING iv_wind = 60
IMPORTING ev_text = DATA(lv_text) ).
cl_abap_unit_assert=>assert_equals( exp = '' act = lv_text ).
ENDMETHOD.
METHOD valid_plan_passes.
check_plan( EXPORTING iv_crane = 'K-9' iv_load = 900 iv_capacity = 1000 iv_wind = 10
IMPORTING ev_text = DATA(lv_text) ).
cl_abap_unit_assert=>assert_equals( exp = '' act = lv_text ).
ENDMETHOD.
ENDCLASS.