CLASS {{p}}t21_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS strip_period IMPORTING iv_text TYPE string RETURNING VALUE(rv_text) TYPE string. METHODS blocked_message FOR TESTING. METHODS stock_message FOR TESTING. METHODS warning_message FOR TESTING. METHODS info_message FOR TESTING. METHODS exception_message FOR TESTING. METHODS exception_attributes FOR TESTING. ENDCLASS. CLASS {{p}}t21_test IMPLEMENTATION. METHOD strip_period. rv_text = iv_text. DATA(lv_len) = strlen( rv_text ). IF lv_len > 1. DATA(lv_last) = substring( val = rv_text off = lv_len - 1 len = 1 ). IF lv_last = '.'. rv_text = substring( val = rv_text len = lv_len - 1 ). ENDIF. ENDIF. ENDMETHOD. METHOD blocked_message. DATA lv_order TYPE string VALUE 'SO-100'. DATA lv_reason TYPE string VALUE 'Missing permit'. DATA lv_text TYPE string. MESSAGE ID '{{P}}SCAF_MSG' TYPE 'E' NUMBER '001' WITH lv_order lv_reason INTO lv_text. cl_abap_unit_assert=>assert_equals( exp = 'Scaffolding order SO-100 is blocked: Missing permit' act = strip_period( lv_text ) ). ENDMETHOD. METHOD stock_message. DATA lv_part TYPE string VALUE 'STD-300'. DATA lv_text TYPE string. MESSAGE ID '{{P}}SCAF_MSG' TYPE 'E' NUMBER '002' WITH lv_part INTO lv_text. cl_abap_unit_assert=>assert_equals( exp = 'Scaffold part STD-300 is not in stock' act = strip_period( lv_text ) ). ENDMETHOD. METHOD warning_message. DATA lv_order TYPE string VALUE 'SO-101'. DATA lv_limit TYPE string VALUE '900'. DATA lv_text TYPE string. MESSAGE ID '{{P}}SCAF_MSG' TYPE 'W' NUMBER '004' WITH lv_order lv_limit INTO lv_text. cl_abap_unit_assert=>assert_equals( exp = 'Order SO-101 exceeds the load limit of 900 kg' act = strip_period( lv_text ) ). ENDMETHOD. METHOD info_message. DATA lv_order TYPE string VALUE 'SO-102'. DATA lv_site TYPE string VALUE 'South Gate'. DATA lv_text TYPE string. MESSAGE ID '{{P}}SCAF_MSG' TYPE 'I' NUMBER '005' WITH lv_order lv_site INTO lv_text. cl_abap_unit_assert=>assert_equals( exp = 'Order SO-102 was released for site South Gate' act = strip_period( lv_text ) ). ENDMETHOD. METHOD exception_message. DATA(lo_exception) = NEW {{p}}cx_scaf_order( iv_order_id = 'SO-100' iv_reason = 'Missing permit' ). cl_abap_unit_assert=>assert_equals( exp = 'Scaffolding order SO-100 is blocked: Missing permit' act = strip_period( lo_exception->get_message( ) ) ). ENDMETHOD. METHOD exception_attributes. DATA(lo_exception) = NEW {{p}}cx_scaf_order( iv_order_id = 'SO-100' iv_reason = 'Missing permit' ). cl_abap_unit_assert=>assert_equals( exp = 'SO-100' act = lo_exception->order_id ). cl_abap_unit_assert=>assert_equals( exp = 'Missing permit' act = lo_exception->reason ). ENDMETHOD. ENDCLASS.