CLASS {{p}}t20_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 small_count FOR TESTING. METHODS medium_count FOR TESTING. METHODS large_count FOR TESTING. METHODS item_count FOR TESTING. METHODS total_amount FOR TESTING. METHODS cancelled_items_ignored FOR TESTING. METHODS regions_in_result FOR TESTING. METHODS class_boundaries FOR TESTING. METHODS two_large_items FOR TESTING. ENDCLASS. CLASS {{p}}t20_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_SALES_CLASS' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_sale TYPE STANDARD TABLE OF {{p}}sale WITH EMPTY KEY. go_env->clear_doubles( ). lt_sale = VALUE #( ( sale_id = 'S1' item_no = 1 region = 'AA' amount = '0.01' status = 'A' ) ( sale_id = 'S1' item_no = 2 region = 'AA' amount = '99.99' status = 'A' ) ( sale_id = 'S1' item_no = 3 region = 'AA' amount = '100.00' status = 'A' ) ( sale_id = 'S1' item_no = 4 region = 'AA' amount = '999.99' status = 'A' ) ( sale_id = 'S1' item_no = 5 region = 'AA' amount = '1000.00' status = 'A' ) ( sale_id = 'S2' item_no = 1 region = 'BB' amount = '10.00' status = 'A' ) ( sale_id = 'S2' item_no = 2 region = 'BB' amount = '20.00' status = 'X' ) ( sale_id = 'S3' item_no = 1 region = 'CC' amount = '500.00' status = 'X' ) ). go_env->insert_test_data( lt_sale ). ENDMETHOD. METHOD small_count. SELECT SINGLE small_count FROM {{p}}i_sales_class WHERE region = 'AA' INTO @DATA(lv_aa). SELECT SINGLE small_count FROM {{p}}i_sales_class WHERE region = 'BB' INTO @DATA(lv_bb). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 2 ) act = CONV int8( lv_aa ) ). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 1 ) act = CONV int8( lv_bb ) ). ENDMETHOD. METHOD medium_count. SELECT SINGLE medium_count FROM {{p}}i_sales_class WHERE region = 'AA' INTO @DATA(lv_aa). SELECT SINGLE medium_count FROM {{p}}i_sales_class WHERE region = 'BB' INTO @DATA(lv_bb). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 2 ) act = CONV int8( lv_aa ) ). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 0 ) act = CONV int8( lv_bb ) ). ENDMETHOD. METHOD large_count. SELECT SINGLE large_count FROM {{p}}i_sales_class WHERE region = 'AA' INTO @DATA(lv_aa). SELECT SINGLE large_count FROM {{p}}i_sales_class WHERE region = 'BB' INTO @DATA(lv_bb). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 1 ) act = CONV int8( lv_aa ) ). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 0 ) act = CONV int8( lv_bb ) ). ENDMETHOD. METHOD item_count. SELECT SINGLE item_count FROM {{p}}i_sales_class WHERE region = 'AA' INTO @DATA(lv_aa). SELECT SINGLE item_count FROM {{p}}i_sales_class WHERE region = 'BB' INTO @DATA(lv_bb). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 5 ) act = CONV int8( lv_aa ) ). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 1 ) act = CONV int8( lv_bb ) ). ENDMETHOD. METHOD total_amount. SELECT SINGLE total_amount FROM {{p}}i_sales_class WHERE region = 'AA' INTO @DATA(lv_aa). SELECT SINGLE total_amount FROM {{p}}i_sales_class WHERE region = 'BB' INTO @DATA(lv_bb). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '2199.99' ) act = CONV decfloat34( lv_aa ) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '10.00' ) act = CONV decfloat34( lv_bb ) ). ENDMETHOD. METHOD cancelled_items_ignored. SELECT SINGLE item_count, total_amount FROM {{p}}i_sales_class WHERE region = 'BB' INTO (@DATA(lv_count), @DATA(lv_total)). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 1 ) act = CONV int8( lv_count ) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '10.00' ) act = CONV decfloat34( lv_total ) ). ENDMETHOD. METHOD regions_in_result. SELECT COUNT(*) FROM {{p}}i_sales_class INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 2 ) act = CONV int8( lv_rows ) ). SELECT SINGLE region FROM {{p}}i_sales_class WHERE region = 'CC' INTO @DATA(lv_region). cl_abap_unit_assert=>assert_initial( act = lv_region ). ENDMETHOD. METHOD two_large_items. DATA lt_sale TYPE STANDARD TABLE OF {{p}}sale WITH EMPTY KEY. go_env->clear_doubles( ). lt_sale = VALUE #( ( sale_id = 'L1' item_no = 1 region = 'DD' amount = '1500.00' status = 'A' ) ( sale_id = 'L1' item_no = 2 region = 'DD' amount = '2500.00' status = 'A' ) ). go_env->insert_test_data( lt_sale ). SELECT SINGLE large_count FROM {{p}}i_sales_class WHERE region = 'DD' INTO @DATA(lv_large). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 2 ) act = CONV int8( lv_large ) ). ENDMETHOD. METHOD class_boundaries. DATA lt_sale TYPE STANDARD TABLE OF {{p}}sale WITH EMPTY KEY. go_env->clear_doubles( ). lt_sale = VALUE #( ( sale_id = 'B1' item_no = 1 region = 'AA' amount = '99.99' status = 'A' ) ( sale_id = 'B1' item_no = 2 region = 'AA' amount = '100.00' status = 'A' ) ( sale_id = 'B1' item_no = 3 region = 'AA' amount = '1000.00' status = 'A' ) ). go_env->insert_test_data( lt_sale ). SELECT SINGLE small_count, medium_count, large_count FROM {{p}}i_sales_class WHERE region = 'AA' INTO (@DATA(lv_small), @DATA(lv_medium), @DATA(lv_large)). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 1 ) act = CONV int8( lv_small ) ). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 1 ) act = CONV int8( lv_medium ) ). cl_abap_unit_assert=>assert_equals( exp = CONV int8( 1 ) act = CONV int8( lv_large ) ). ENDMETHOD. ENDCLASS.