CLASS {{p}}t41_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 counts_readings FOR TESTING. METHODS average_value FOR TESTING. METHODS max_value FOR TESTING. METHODS alerts_counted FOR TESTING. METHODS no_alert_at_limit FOR TESTING. METHODS unknown_machine_ignored FOR TESTING. METHODS name_and_plant FOR TESTING. METHODS one_row_per_day FOR TESTING. METHODS second_day_values FOR TESTING. METHODS machine_without_readings FOR TESTING. ENDCLASS. CLASS {{p}}t41_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_MACHINE_DAY' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_mach TYPE STANDARD TABLE OF {{p}}mach WITH EMPTY KEY. DATA lt_sensor TYPE STANDARD TABLE OF {{p}}sensor WITH EMPTY KEY. go_env->clear_doubles( ). lt_mach = VALUE #( ( machine_id = 'M1' machine_name = 'Press 1' plant = '1000' ) ( machine_id = 'M2' machine_name = 'Press 2' plant = '2000' ) ( machine_id = 'M3' machine_name = 'Drill 3' plant = '1000' ) ( machine_id = 'M4' machine_name = 'Drill 4' plant = '2000' ) ). lt_sensor = VALUE #( ( machine_id = 'M1' reading_no = 1 reading_date = '20240101' sensor = 'TEMP' reading_value = '10.00' ) ( machine_id = 'M1' reading_no = 2 reading_date = '20240101' sensor = 'TEMP' reading_value = '20.00' ) ( machine_id = 'M1' reading_no = 3 reading_date = '20240101' sensor = 'TEMP' reading_value = '30.00' ) ( machine_id = 'M1' reading_no = 4 reading_date = '20240101' sensor = 'VIBR' reading_value = '99.00' ) ( machine_id = 'M1' reading_no = 5 reading_date = '20240102' sensor = 'TEMP' reading_value = '5.00' ) ( machine_id = 'M1' reading_no = 6 reading_date = '20240102' sensor = 'TEMP' reading_value = '6.00' ) ( machine_id = 'M2' reading_no = 1 reading_date = '20240101' sensor = 'TEMP' reading_value = '95.50' ) ( machine_id = 'M2' reading_no = 2 reading_date = '20240101' sensor = 'TEMP' reading_value = '100.00' ) ( machine_id = 'M4' reading_no = 1 reading_date = '20240101' sensor = 'TEMP' reading_value = '80.00' ) ( machine_id = 'M9' reading_no = 1 reading_date = '20240101' sensor = 'TEMP' reading_value = '50.00' ) ). go_env->insert_test_data( lt_mach ). go_env->insert_test_data( lt_sensor ). ENDMETHOD. METHOD counts_readings. SELECT SINGLE reading_count FROM {{p}}i_machine_day WHERE machine_id = 'M1' AND reading_date = '20240101' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 3 act = CONV i( lv_count ) ). ENDMETHOD. METHOD average_value. SELECT SINGLE avg_value FROM {{p}}i_machine_day WHERE machine_id = 'M1' AND reading_date = '20240101' INTO @DATA(lv_avg). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '20.00' ) act = CONV decfloat34( lv_avg ) ). ENDMETHOD. METHOD max_value. SELECT SINGLE max_value FROM {{p}}i_machine_day WHERE machine_id = 'M1' AND reading_date = '20240101' INTO @DATA(lv_max). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '30.00' ) act = CONV decfloat34( lv_max ) ). ENDMETHOD. METHOD alerts_counted. SELECT SINGLE alert_count FROM {{p}}i_machine_day WHERE machine_id = 'M2' AND reading_date = '20240101' INTO @DATA(lv_alerts). cl_abap_unit_assert=>assert_equals( exp = 2 act = CONV i( lv_alerts ) ). ENDMETHOD. METHOD no_alert_at_limit. SELECT SINGLE alert_count FROM {{p}}i_machine_day WHERE machine_id = 'M4' AND reading_date = '20240101' INTO @DATA(lv_alerts). cl_abap_unit_assert=>assert_equals( exp = 0 act = CONV i( lv_alerts ) ). ENDMETHOD. METHOD unknown_machine_ignored. SELECT COUNT(*) FROM {{p}}i_machine_day WHERE machine_id = 'M9' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 0 act = CONV i( lv_rows ) ). ENDMETHOD. METHOD name_and_plant. SELECT COUNT(*) FROM {{p}}i_machine_day WHERE machine_id = 'M2' AND machine_name = 'Press 2' AND plant = '2000' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 1 act = CONV i( lv_rows ) ). ENDMETHOD. METHOD one_row_per_day. SELECT COUNT(*) FROM {{p}}i_machine_day WHERE machine_id = 'M1' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 2 act = CONV i( lv_rows ) ). ENDMETHOD. METHOD second_day_values. SELECT SINGLE reading_count FROM {{p}}i_machine_day WHERE machine_id = 'M1' AND reading_date = '20240102' INTO @DATA(lv_count). SELECT SINGLE avg_value FROM {{p}}i_machine_day WHERE machine_id = 'M1' AND reading_date = '20240102' INTO @DATA(lv_avg). cl_abap_unit_assert=>assert_equals( exp = 2 act = CONV i( lv_count ) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '5.50' ) act = CONV decfloat34( lv_avg ) ). ENDMETHOD. METHOD machine_without_readings. SELECT COUNT(*) FROM {{p}}i_machine_day WHERE machine_id = 'M3' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 0 act = CONV i( lv_rows ) ). ENDMETHOD. ENDCLASS.