CLASS {{p}}loan_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS check IMPORTING iv_fragile TYPE abap_bool iv_insured TYPE abap_bool iv_days TYPE i EXPORTING ev_approved TYPE abap_bool ev_reason TYPE string ev_subrc TYPE sysubrc. METHODS invalid_days FOR TESTING. METHODS too_long FOR TESTING. METHODS insured_approved FOR TESTING. METHODS fragile_rejected FOR TESTING. METHODS plain_approved FOR TESTING. ENDCLASS. CLASS {{p}}loan_test IMPLEMENTATION. METHOD check. CALL FUNCTION '{{P}}LOAN_CHECK' EXPORTING iv_fragile = iv_fragile iv_insured = iv_insured iv_days = iv_days IMPORTING ev_approved = ev_approved ev_reason = ev_reason EXCEPTIONS invalid_days = 1 OTHERS = 2. ev_subrc = sy-subrc. ENDMETHOD. METHOD invalid_days. check( EXPORTING iv_days = 0 IMPORTING ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ). ENDMETHOD. METHOD too_long. check( EXPORTING iv_days = 100 IMPORTING ev_approved = DATA(lv_approved) ev_reason = DATA(lv_reason) ). cl_abap_unit_assert=>assert_false( lv_approved ). cl_abap_unit_assert=>assert_equals( exp = `TOO_LONG` act = lv_reason ). ENDMETHOD. METHOD insured_approved. check( EXPORTING iv_insured = abap_true iv_days = 30 IMPORTING ev_approved = DATA(lv_approved) ev_reason = DATA(lv_reason) ). cl_abap_unit_assert=>assert_true( lv_approved ). cl_abap_unit_assert=>assert_equals( exp = `INSURED` act = lv_reason ). ENDMETHOD. METHOD fragile_rejected. check( EXPORTING iv_fragile = abap_true iv_days = 30 IMPORTING ev_approved = DATA(lv_approved) ev_reason = DATA(lv_reason) ). cl_abap_unit_assert=>assert_false( lv_approved ). cl_abap_unit_assert=>assert_equals( exp = `FRAGILE` act = lv_reason ). ENDMETHOD. METHOD plain_approved. check( EXPORTING iv_days = 30 IMPORTING ev_approved = DATA(lv_approved) ev_reason = DATA(lv_reason) ). cl_abap_unit_assert=>assert_true( lv_approved ). cl_abap_unit_assert=>assert_equals( exp = `OK` act = lv_reason ). ENDMETHOD. ENDCLASS.