CLASS ltc_balloon_checker DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}balloon_checker. METHODS setup. METHODS free_payload IMPORTING iv_passengers TYPE i iv_weight_kg TYPE i iv_wind_kmh TYPE i iv_cloud_base_m TYPE i RETURNING VALUE(rv_free_kg) TYPE i. METHODS released_flight FOR TESTING. METHODS crew_limit FOR TESTING. METHODS weight_limit FOR TESTING. METHODS wind_limit FOR TESTING. METHODS cloud_limit FOR TESTING. METHODS check_sequence FOR TESTING. ENDCLASS. CLASS ltc_balloon_checker IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}balloon_checker( ). ENDMETHOD. METHOD free_payload. TRY. rv_free_kg = mo_cut->check_flight( iv_passengers = iv_passengers iv_weight_kg = iv_weight_kg iv_wind_kmh = iv_wind_kmh iv_cloud_base_m = iv_cloud_base_m ). CATCH {{p}}cx_balloon_flight. rv_free_kg = -1. ENDTRY. ENDMETHOD. METHOD released_flight. cl_abap_unit_assert=>assert_equals( exp = 140 act = free_payload( iv_passengers = 4 iv_weight_kg = 500 iv_wind_kmh = 10 iv_cloud_base_m = 2000 ) ). ENDMETHOD. METHOD crew_limit. cl_abap_unit_assert=>assert_equals( exp = -1 act = free_payload( iv_passengers = 9 iv_weight_kg = 500 iv_wind_kmh = 10 iv_cloud_base_m = 2000 ) ). ENDMETHOD. METHOD weight_limit. cl_abap_unit_assert=>assert_equals( exp = -1 act = free_payload( iv_passengers = 4 iv_weight_kg = 700 iv_wind_kmh = 10 iv_cloud_base_m = 2000 ) ). ENDMETHOD. METHOD wind_limit. cl_abap_unit_assert=>assert_equals( exp = -1 act = free_payload( iv_passengers = 4 iv_weight_kg = 500 iv_wind_kmh = 25 iv_cloud_base_m = 2000 ) ). ENDMETHOD. METHOD cloud_limit. cl_abap_unit_assert=>assert_equals( exp = -1 act = free_payload( iv_passengers = 4 iv_weight_kg = 500 iv_wind_kmh = 10 iv_cloud_base_m = 200 ) ). ENDMETHOD. METHOD check_sequence. DATA lv_text TYPE string. TRY. mo_cut->check_flight( iv_passengers = 9 iv_weight_kg = 700 iv_wind_kmh = 25 iv_cloud_base_m = 100 ). cl_abap_unit_assert=>fail( msg = 'No exception was raised' ). CATCH {{p}}cx_balloon_crew INTO DATA(lo_exc). lv_text = lo_exc->mv_text. CATCH {{p}}cx_balloon_flight. cl_abap_unit_assert=>fail( msg = 'Wrong exception type' ). ENDTRY. cl_abap_unit_assert=>assert_equals( exp = 'Passengers 9 exceeds the limit 8' act = lv_text ). ENDMETHOD. ENDCLASS.