CLASS {{p}}kart_check_hidden 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 assert_char_length IMPORTING iv_name TYPE string iv_length TYPE i. METHODS assert_number IMPORTING iv_name TYPE string iv_value TYPE i. METHODS reason_ok FOR TESTING. METHODS reason_codes FOR TESTING. METHODS limit_values FOR TESTING. METHODS opening_times FOR TESTING. METHODS reason_length FOR TESTING. METHODS booking_components FOR TESTING. METHODS bookings_is_table FOR TESTING. METHODS check_booking_ok FOR TESTING. METHODS check_group_ok FOR TESTING. METHODS is_open_at_noon FOR TESTING. ENDCLASS. CLASS {{p}}kart_check_hidden IMPLEMENTATION. METHOD setup. mo_cut = me. ENDMETHOD. METHOD assert_char_length. DATA lv_probe TYPE string. DATA lv_expected TYPE string. DATA ls_booking TYPE {{p}}if_kart_check=>ty_booking. ASSIGN COMPONENT iv_name OF STRUCTURE ls_booking TO FIELD-SYMBOL(). IF sy-subrc <> 0. cl_abap_unit_assert=>fail( msg = |Component { iv_name } is missing| ). RETURN. ENDIF. DO iv_length + 1 TIMES. lv_probe = lv_probe && 'X'. ENDDO. DO iv_length TIMES. lv_expected = lv_expected && 'X'. ENDDO. = lv_probe. cl_abap_unit_assert=>assert_equals( exp = lv_expected act = msg = |Length of { iv_name }| ). ENDMETHOD. METHOD assert_number. DATA ls_booking TYPE {{p}}if_kart_check=>ty_booking. ASSIGN COMPONENT iv_name OF STRUCTURE ls_booking TO FIELD-SYMBOL(). IF sy-subrc <> 0. cl_abap_unit_assert=>fail( msg = |Component { iv_name } is missing| ). RETURN. ENDIF. = iv_value. cl_abap_unit_assert=>assert_equals( exp = iv_value act = msg = |Value of { iv_name }| ). ENDMETHOD. METHOD reason_ok. cl_abap_unit_assert=>assert_equals( exp = 'OK' act = {{p}}if_kart_check=>c_reason-ok ). ENDMETHOD. METHOD reason_codes. 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 limit_values. 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. 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_length. 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_components. assert_char_length( iv_name = 'DRIVER_NAME' iv_length = 20 ). assert_number( iv_name = 'DRIVER_AGE' iv_value = 30 ). assert_number( iv_name = 'LAPS' iv_value = 10 ). DATA ls_booking TYPE {{p}}if_kart_check=>ty_booking. ls_booking-booking_time = '235959'. cl_abap_unit_assert=>assert_equals( exp = '235959' act = ls_booking-booking_time ). ENDMETHOD. METHOD bookings_is_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 ). DATA(lo_table) = CAST cl_abap_tabledescr( lo_descr ). DATA(lo_row) = lo_table->get_table_line_type( ). DATA(lo_struct) = CAST cl_abap_structdescr( lo_row ). cl_abap_unit_assert=>assert_equals( exp = 4 act = lines( lo_struct->components ) ). ENDMETHOD. METHOD check_booking_ok. DATA ls_booking TYPE {{p}}if_kart_check=>ty_booking. ls_booking-driver_name = 'MAX MUSTERMANN'. ls_booking-driver_age = 30. ls_booking-laps = 10. ls_booking-booking_time = '140000'. cl_abap_unit_assert=>assert_equals( exp = 'OK' act = mo_cut->check_booking( ls_booking ) ). ENDMETHOD. METHOD check_group_ok. DATA lt_bookings TYPE {{p}}if_kart_check=>tt_bookings. cl_abap_unit_assert=>assert_equals( exp = 'OK' act = mo_cut->check_group( lt_bookings ) ). ENDMETHOD. METHOD is_open_at_noon. DATA lv_time TYPE t VALUE '120000'. 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.