CLASS {{p}}kart_check_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PUBLIC SECTION. INTERFACES {{p}}if_kart_check. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}if_kart_check. METHODS setup. METHODS reason_codes_are_fixed FOR TESTING. METHODS limits_are_fixed FOR TESTING. METHODS opening_times_are_fixed FOR TESTING. METHODS reason_type_has_length_12 FOR TESTING. METHODS booking_has_four_components FOR TESTING. METHODS bookings_is_a_table FOR TESTING. METHODS check_booking_returns_ok FOR TESTING. METHODS is_open_returns_true FOR TESTING. ENDCLASS. CLASS {{p}}kart_check_test IMPLEMENTATION. METHOD setup. mo_cut = me. ENDMETHOD. METHOD reason_codes_are_fixed. cl_abap_unit_assert=>assert_equals( exp = 'OK' act = {{p}}if_kart_check=>c_reason-ok ). cl_abap_unit_assert=>assert_equals( exp = 'NO_NAME' act = {{p}}if_kart_check=>c_reason-no_name ). cl_abap_unit_assert=>assert_equals( exp = 'TOO_YOUNG' act = {{p}}if_kart_check=>c_reason-too_young ). cl_abap_unit_assert=>assert_equals( exp = 'TOO_OLD' act = {{p}}if_kart_check=>c_reason-too_old ). cl_abap_unit_assert=>assert_equals( exp = 'BAD_LAPS' act = {{p}}if_kart_check=>c_reason-bad_laps ). cl_abap_unit_assert=>assert_equals( exp = 'CLOSED' act = {{p}}if_kart_check=>c_reason-closed ). cl_abap_unit_assert=>assert_equals( exp = 'TOO_MANY' act = {{p}}if_kart_check=>c_reason-too_many ). ENDMETHOD. METHOD limits_are_fixed. cl_abap_unit_assert=>assert_equals( exp = 12 act = {{p}}if_kart_check=>c_limit-min_age ). cl_abap_unit_assert=>assert_equals( exp = 75 act = {{p}}if_kart_check=>c_limit-max_age ). cl_abap_unit_assert=>assert_equals( exp = 5 act = {{p}}if_kart_check=>c_limit-min_laps ). cl_abap_unit_assert=>assert_equals( exp = 30 act = {{p}}if_kart_check=>c_limit-max_laps ). cl_abap_unit_assert=>assert_equals( exp = 8 act = {{p}}if_kart_check=>c_limit-max_drivers ). ENDMETHOD. METHOD opening_times_are_fixed. DATA lv_from TYPE t VALUE '090000'. DATA lv_to TYPE t VALUE '220000'. cl_abap_unit_assert=>assert_equals( exp = lv_from act = {{p}}if_kart_check=>c_open_from ). cl_abap_unit_assert=>assert_equals( exp = lv_to act = {{p}}if_kart_check=>c_open_to ). ENDMETHOD. METHOD reason_type_has_length_12. DATA lv_reason TYPE {{p}}if_kart_check=>ty_reason. DATA lv_probe TYPE string. DO 13 TIMES. lv_probe = lv_probe && 'X'. ENDDO. lv_reason = lv_probe. cl_abap_unit_assert=>assert_equals( exp = 'XXXXXXXXXXXX' act = lv_reason ). ENDMETHOD. METHOD booking_has_four_components. DATA ls_booking TYPE {{p}}if_kart_check=>ty_booking. DATA(lo_descr) = cl_abap_typedescr=>describe_by_data( ls_booking ). DATA(lo_struct) = CAST cl_abap_structdescr( lo_descr ). cl_abap_unit_assert=>assert_equals( exp = 4 act = lines( lo_struct->components ) ). ENDMETHOD. METHOD bookings_is_a_table. DATA lt_bookings TYPE {{p}}if_kart_check=>tt_bookings. DATA(lo_descr) = cl_abap_typedescr=>describe_by_data( lt_bookings ). cl_abap_unit_assert=>assert_equals( exp = cl_abap_typedescr=>typekind_table act = lo_descr->type_kind ). ENDMETHOD. METHOD check_booking_returns_ok. DATA ls_booking TYPE {{p}}if_kart_check=>ty_booking. ls_booking-driver_name = 'ANNA BEISPIEL'. ls_booking-driver_age = 25. ls_booking-laps = 8. ls_booking-booking_time = '100000'. cl_abap_unit_assert=>assert_equals( exp = 'OK' act = mo_cut->check_booking( ls_booking ) ). ENDMETHOD. METHOD is_open_returns_true. DATA lv_time TYPE t VALUE '150000'. cl_abap_unit_assert=>assert_equals( exp = abap_true act = mo_cut->is_open( lv_time ) ). ENDMETHOD. METHOD {{p}}if_kart_check~check_booking. rv_reason = {{p}}if_kart_check=>c_reason-ok. ENDMETHOD. METHOD {{p}}if_kart_check~check_group. rv_reason = {{p}}if_kart_check=>c_reason-ok. ENDMETHOD. METHOD {{p}}if_kart_check~is_open. rv_open = abap_true. ENDMETHOD. ENDCLASS.