140 lines
4.7 KiB
ABAP
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.
|