CLASS {{p}}t21_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS call IMPORTING iv_scans TYPE string iv_lifts TYPE string EXPORTING ev_rides TYPE i ev_passes TYPE i ev_report TYPE string ev_subrc TYPE sysubrc. METHODS empty_scans FOR TESTING. METHODS one_scan FOR TESTING. METHODS duplicate_scan FOR TESTING. METHODS unknown_lift FOR TESTING. METHODS invalid_lines FOR TESTING. METHODS sorted_report FOR TESTING. METHODS distinct_areas FOR TESTING. METHODS duplicate_lift FOR TESTING. METHODS two_passes FOR TESTING. METHODS missing_lift_list FOR TESTING. METHODS bad_lift_line FOR TESTING. METHODS empty_lift_name FOR TESTING. ENDCLASS. CLASS {{p}}t21_hidden IMPLEMENTATION. METHOD call. CALL FUNCTION '{{P}}LIFT_STATS' EXPORTING iv_scans = iv_scans iv_lifts = iv_lifts IMPORTING ev_rides = ev_rides ev_passes = ev_passes ev_report = ev_report EXCEPTIONS no_lifts = 1 OTHERS = 2. ev_subrc = sy-subrc. ENDMETHOD. METHOD empty_scans. call( EXPORTING iv_scans = `` iv_lifts = `L1;North` IMPORTING ev_rides = DATA(lv_rides) ev_passes = DATA(lv_passes) ev_report = DATA(lv_report) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rides ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_passes ). cl_abap_unit_assert=>assert_equals( exp = `` act = lv_report ). ENDMETHOD. METHOD one_scan. call( EXPORTING iv_scans = `P1;L1` iv_lifts = `L1;North` IMPORTING ev_rides = DATA(lv_rides) ev_passes = DATA(lv_passes) ev_report = DATA(lv_report) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rides ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_passes ). cl_abap_unit_assert=>assert_equals( exp = `P1;1;1` act = lv_report ). ENDMETHOD. METHOD duplicate_scan. call( EXPORTING iv_scans = |P1;L1\nP1;L1| iv_lifts = `L1;North` IMPORTING ev_rides = DATA(lv_rides) ev_report = DATA(lv_report) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rides ). cl_abap_unit_assert=>assert_equals( exp = `P1;1;1` act = lv_report ). ENDMETHOD. METHOD unknown_lift. call( EXPORTING iv_scans = `P1;L9` iv_lifts = `L1;North` IMPORTING ev_rides = DATA(lv_rides) ev_passes = DATA(lv_passes) ev_report = DATA(lv_report) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rides ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_passes ). cl_abap_unit_assert=>assert_equals( exp = `` act = lv_report ). ENDMETHOD. METHOD invalid_lines. call( EXPORTING iv_scans = |P1;L1\nP1L1\n;L1\nP1;\nP1;L1;X\nP2;L1| iv_lifts = `L1;North` IMPORTING ev_rides = DATA(lv_rides) ev_passes = DATA(lv_passes) ev_report = DATA(lv_report) ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_rides ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_passes ). cl_abap_unit_assert=>assert_equals( exp = |P1;1;1\nP2;1;1| act = lv_report ). ENDMETHOD. METHOD sorted_report. call( EXPORTING iv_scans = |P3;L1\nP1;L1\nP2;L1| iv_lifts = `L1;North` IMPORTING ev_passes = DATA(lv_passes) ev_report = DATA(lv_report) ). cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_passes ). cl_abap_unit_assert=>assert_equals( exp = |P1;1;1\nP2;1;1\nP3;1;1| act = lv_report ). ENDMETHOD. METHOD distinct_areas. call( EXPORTING iv_scans = |P1;L1\nP1;L2\nP1;L3| iv_lifts = |L1;North\nL2;North\nL3;South| IMPORTING ev_rides = DATA(lv_rides) ev_report = DATA(lv_report) ). cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_rides ). cl_abap_unit_assert=>assert_equals( exp = `P1;3;2` act = lv_report ). ENDMETHOD. METHOD duplicate_lift. call( EXPORTING iv_scans = |P1;L1\nP1;L2| iv_lifts = |L1;North\nL2;North\nL1;South| IMPORTING ev_report = DATA(lv_report) ). cl_abap_unit_assert=>assert_equals( exp = `P1;2;1` act = lv_report ). ENDMETHOD. METHOD two_passes. call( EXPORTING iv_scans = |P1;L1\nP1;L2\nP2;L2| iv_lifts = |L1;North\nL2;South| IMPORTING ev_rides = DATA(lv_rides) ev_passes = DATA(lv_passes) ev_report = DATA(lv_report) ). cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_rides ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_passes ). cl_abap_unit_assert=>assert_equals( exp = |P1;2;2\nP2;1;1| act = lv_report ). ENDMETHOD. METHOD missing_lift_list. call( EXPORTING iv_scans = `P1;L1` iv_lifts = `` IMPORTING ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = CONV sysubrc( 1 ) act = lv_subrc ). ENDMETHOD. METHOD bad_lift_line. call( EXPORTING iv_scans = |P1;L1\nP1;L2| iv_lifts = |L1\nL2;South| IMPORTING ev_rides = DATA(lv_rides) ev_passes = DATA(lv_passes) ev_report = DATA(lv_report) ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = CONV sysubrc( 0 ) act = lv_subrc ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rides ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_passes ). cl_abap_unit_assert=>assert_equals( exp = `P1;1;1` act = lv_report ). ENDMETHOD. METHOD empty_lift_name. call( EXPORTING iv_scans = `P1;L1` iv_lifts = `;North` IMPORTING ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = CONV sysubrc( 1 ) act = lv_subrc ). ENDMETHOD. ENDCLASS.