CLASS ltc_lift_check DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS no_crane FOR TESTING. METHODS overload FOR TESTING. METHODS wind FOR TESTING. METHODS valid_plan FOR TESTING. ENDCLASS. CLASS ltc_lift_check IMPLEMENTATION. METHOD no_crane. DATA(ls_plan) = VALUE {{p}}lift_check=>ty_lift_plan( plan_id = 'L-1' crane_id = '' ). DATA(lo_check) = NEW {{p}}lift_check( ). TRY. lo_check->check_lift_plan( ls_plan ). cl_abap_unit_assert=>fail( msg = 'Exception expected' ). CATCH {{p}}cx_crane_error INTO DATA(lo_error). cl_abap_unit_assert=>assert_equals( exp = 'Lift plan L-1 has no crane' act = lo_error->get_message_text( ) ). ENDTRY. ENDMETHOD. METHOD overload. DATA(ls_plan) = VALUE {{p}}lift_check=>ty_lift_plan( plan_id = 'L-2' crane_id = 'K-1' load_kg = 2000 capacity_kg = 1000 ). DATA(lo_check) = NEW {{p}}lift_check( ). TRY. lo_check->check_lift_plan( ls_plan ). cl_abap_unit_assert=>fail( msg = 'Exception expected' ). CATCH {{p}}cx_crane_error INTO DATA(lo_error). cl_abap_unit_assert=>assert_equals( exp = 'Lift plan L-2 is too heavy for crane K-1' act = lo_error->get_message_text( ) ). ENDTRY. ENDMETHOD. METHOD wind. DATA(ls_plan) = VALUE {{p}}lift_check=>ty_lift_plan( plan_id = 'L-3' crane_id = 'K-1' wind_kmh = 80 ). DATA(lo_check) = NEW {{p}}lift_check( ). TRY. lo_check->check_lift_plan( ls_plan ). cl_abap_unit_assert=>fail( msg = 'Exception expected' ). CATCH {{p}}cx_crane_error INTO DATA(lo_error). cl_abap_unit_assert=>assert_equals( exp = 'Lift plan L-3 is blocked because of wind' act = lo_error->get_message_text( ) ). ENDTRY. ENDMETHOD. METHOD valid_plan. DATA(ls_plan) = VALUE {{p}}lift_check=>ty_lift_plan( plan_id = 'L-4' crane_id = 'K-1' load_kg = 500 capacity_kg = 1000 wind_kmh = 30 ). DATA(lo_check) = NEW {{p}}lift_check( ). TRY. lo_check->check_lift_plan( ls_plan ). CATCH {{p}}cx_crane_error INTO DATA(lo_error). cl_abap_unit_assert=>fail( msg = lo_error->get_message_text( ) ). ENDTRY. ENDMETHOD. ENDCLASS.