CLASS {{p}}t16_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. CLASS-DATA go_env TYPE REF TO if_cds_test_environment. CLASS-METHODS class_setup. CLASS-METHODS class_teardown. METHODS setup. METHODS route_above_limit FOR TESTING. METHODS veh_count_skips_empty_sail FOR TESTING. METHODS total_fee_sum FOR TESTING. METHODS second_route_shown FOR TESTING. METHODS total_not_max FOR TESTING. METHODS fee_of_multi_sailing_route FOR TESTING. METHODS just_above_limit FOR TESTING. METHODS route_below_limit FOR TESTING. METHODS boundary_not_shown FOR TESTING. METHODS route_without_vehicles FOR TESTING. METHODS row_count FOR TESTING. ENDCLASS. CLASS {{p}}t16_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_ROUTE_LOAD' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_sail TYPE STANDARD TABLE OF {{p}}sail WITH EMPTY KEY. DATA lt_veh TYPE STANDARD TABLE OF {{p}}veh WITH EMPTY KEY. go_env->clear_doubles( ). lt_sail = VALUE #( ( sail_id = 'S1' route_id = 'R1' ) ( sail_id = 'S2' route_id = 'R1' ) ( sail_id = 'S7' route_id = 'R1' ) ( sail_id = 'S3' route_id = 'R2' ) ( sail_id = 'S4' route_id = 'R3' ) ( sail_id = 'S5' route_id = 'R4' ) ( sail_id = 'S6' route_id = 'R5' ) ( sail_id = 'S8' route_id = 'R6' ) ( sail_id = 'S9' route_id = 'R6' ) ( sail_id = 'S10' route_id = 'R7' ) ). lt_veh = VALUE #( ( sail_id = 'S1' veh_no = 1 veh_type = 'CAR' weight_kg = 1500 fee = '50.00' ) ( sail_id = 'S1' veh_no = 2 veh_type = 'TRUCK' weight_kg = 12000 fee = '200.00' ) ( sail_id = 'S2' veh_no = 1 veh_type = 'CAR' weight_kg = 1800 fee = '60.00' ) ( sail_id = 'S3' veh_no = 1 veh_type = 'CAR' weight_kg = 2000 fee = '55.00' ) ( sail_id = 'S4' veh_no = 1 veh_type = 'CAR' weight_kg = 10000 fee = '90.00' ) ( sail_id = 'S5' veh_no = 1 veh_type = 'CAR' weight_kg = 11000 fee = '100.00' ) ( sail_id = 'S8' veh_no = 1 veh_type = 'CAR' weight_kg = 6000 fee = '40.00' ) ( sail_id = 'S9' veh_no = 1 veh_type = 'CAR' weight_kg = 6000 fee = '60.00' ) ( sail_id = 'S10' veh_no = 1 veh_type = 'CAR' weight_kg = 10001 fee = '80.00' ) ). go_env->insert_test_data( lt_sail ). go_env->insert_test_data( lt_veh ). ENDMETHOD. METHOD route_above_limit. SELECT SINGLE total_weight FROM {{p}}i_route_load WHERE route_id = 'R1' INTO @DATA(lv_weight). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 15300 ) act = CONV decfloat34( lv_weight ) ). ENDMETHOD. METHOD veh_count_skips_empty_sail. SELECT SINGLE veh_count FROM {{p}}i_route_load WHERE route_id = 'R1' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_count ). ENDMETHOD. METHOD total_fee_sum. SELECT SINGLE total_fee FROM {{p}}i_route_load WHERE route_id = 'R1' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '310.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD second_route_shown. SELECT SINGLE total_weight FROM {{p}}i_route_load WHERE route_id = 'R4' INTO @DATA(lv_weight). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 11000 ) act = CONV decfloat34( lv_weight ) ). ENDMETHOD. METHOD total_not_max. SELECT SINGLE total_weight FROM {{p}}i_route_load WHERE route_id = 'R6' INTO @DATA(lv_weight). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 12000 ) act = CONV decfloat34( lv_weight ) ). ENDMETHOD. METHOD fee_of_multi_sailing_route. SELECT SINGLE total_fee FROM {{p}}i_route_load WHERE route_id = 'R6' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '100.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD just_above_limit. SELECT SINGLE total_weight FROM {{p}}i_route_load WHERE route_id = 'R7' INTO @DATA(lv_weight). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 10001 ) act = CONV decfloat34( lv_weight ) ). ENDMETHOD. METHOD route_below_limit. SELECT COUNT(*) FROM {{p}}i_route_load WHERE route_id = 'R2' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rows ). ENDMETHOD. METHOD boundary_not_shown. SELECT COUNT(*) FROM {{p}}i_route_load WHERE route_id = 'R3' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rows ). ENDMETHOD. METHOD route_without_vehicles. SELECT COUNT(*) FROM {{p}}i_route_load WHERE route_id = 'R5' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rows ). ENDMETHOD. METHOD row_count. SELECT COUNT(*) FROM {{p}}i_route_load INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 4 act = lv_rows ). ENDMETHOD. ENDCLASS.