CLASS {{p}}t_bike_hid 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 heavy_bikes_only FOR TESTING. METHODS boundary_excluded FOR TESTING. METHODS light_bike_excluded FOR TESTING. METHODS bike_without_rides FOR TESTING. METHODS ride_count_shown FOR TESTING. METHODS total_distance_shown FOR TESTING. METHODS station_shown FOR TESTING. ENDCLASS. CLASS {{p}}t_bike_hid IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_BIKE_USE' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_bike TYPE STANDARD TABLE OF {{p}}bike WITH EMPTY KEY. DATA lt_ride TYPE STANDARD TABLE OF {{p}}ride WITH EMPTY KEY. go_env->clear_doubles( ). lt_bike = VALUE #( ( bike_id = 'B1' station = 'NORD' bike_type = 'E' ) ( bike_id = 'B2' station = 'SUED' bike_type = 'C' ) ( bike_id = 'B3' station = 'WEST' bike_type = 'C' ) ( bike_id = 'B4' station = 'OST' bike_type = 'E' ) ( bike_id = 'B5' station = 'NORD' bike_type = 'C' ) ). lt_ride = VALUE #( ( ride_id = 'R01' bike_id = 'B1' ride_date = '20240101' distance_km = '20.0' ) ( ride_id = 'R02' bike_id = 'B1' ride_date = '20240102' distance_km = '30.0' ) ( ride_id = 'R03' bike_id = 'B2' ride_date = '20240103' distance_km = '25.5' ) ( ride_id = 'R04' bike_id = 'B2' ride_date = '20240104' distance_km = '30.0' ) ( ride_id = 'R05' bike_id = 'B3' ride_date = '20240105' distance_km = '10.0' ) ( ride_id = 'R06' bike_id = 'B4' ride_date = '20240106' distance_km = '40.0' ) ( ride_id = 'R07' bike_id = 'B4' ride_date = '20240107' distance_km = '40.0' ) ( ride_id = 'R08' bike_id = 'B4' ride_date = '20240108' distance_km = '25.0' ) ). go_env->insert_test_data( lt_bike ). go_env->insert_test_data( lt_ride ). ENDMETHOD. METHOD heavy_bikes_only. SELECT COUNT(*) FROM {{p}}i_bike_use INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_rows ). ENDMETHOD. METHOD boundary_excluded. SELECT COUNT(*) FROM {{p}}i_bike_use WHERE bike_id = 'B1' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rows ). ENDMETHOD. METHOD light_bike_excluded. SELECT COUNT(*) FROM {{p}}i_bike_use WHERE bike_id = 'B3' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rows ). ENDMETHOD. METHOD bike_without_rides. SELECT COUNT(*) FROM {{p}}i_bike_use WHERE bike_id = 'B5' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rows ). ENDMETHOD. METHOD ride_count_shown. SELECT SINGLE ride_count FROM {{p}}i_bike_use WHERE bike_id = 'B2' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_count ). ENDMETHOD. METHOD total_distance_shown. SELECT SINGLE total_distance FROM {{p}}i_bike_use WHERE bike_id = 'B4' INTO @DATA(lv_total). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '105.0' ) act = CONV decfloat34( lv_total ) ). ENDMETHOD. METHOD station_shown. SELECT SINGLE station FROM {{p}}i_bike_use WHERE bike_id = 'B2' INTO @DATA(lv_station). cl_abap_unit_assert=>assert_equals( exp = 'SUED' act = lv_station ). ENDMETHOD. ENDCLASS.