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 grade_a FOR TESTING. METHODS grade_b FOR TESTING. METHODS grade_c FOR TESTING. METHODS fibre_natural FOR TESTING. METHODS fibre_synthetic FOR TESTING. METHODS loom_prefix FOR TESTING. METHODS area_rounded FOR TESTING. METHODS area_whole FOR TESTING. METHODS fabric_name FOR TESTING. METHODS roll_without_fabric FOR TESTING. ENDCLASS. CLASS {{p}}t16_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_ROLL_GRADE' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_fabric TYPE STANDARD TABLE OF {{p}}fabric WITH EMPTY KEY. DATA lt_roll TYPE STANDARD TABLE OF {{p}}roll WITH EMPTY KEY. go_env->clear_doubles( ). lt_fabric = VALUE #( ( fabric = 'F1' fabric_name = 'COTTON POPLIN' fibre = 'C' ) ( fabric = 'F2' fabric_name = 'WOOL TWILL' fibre = 'W' ) ( fabric = 'F3' fabric_name = 'SILK SATIN' fibre = 'S' ) ( fabric = 'F4' fabric_name = 'POLYESTER' fibre = 'P' ) ). lt_roll = VALUE #( ( roll_id = 'L01-R-0001' fabric = 'F1' length_cm = 123 width_cm = 45 defects = 0 ) ( roll_id = 'L02-R-0002' fabric = 'F2' length_cm = 200 width_cm = 150 defects = 3 ) ( roll_id = 'L03-R-0003' fabric = 'F4' length_cm = 100 width_cm = 100 defects = 4 ) ( roll_id = 'L04-R-0004' fabric = 'F9' length_cm = 100 width_cm = 100 defects = 1 ) ). go_env->insert_test_data( lt_fabric ). go_env->insert_test_data( lt_roll ). ENDMETHOD. METHOD grade_a. SELECT SINGLE grade FROM {{p}}i_roll_grade WHERE roll_id = 'L01-R-0001' INTO @DATA(lv_grade). cl_abap_unit_assert=>assert_equals( exp = 'A' act = lv_grade ). ENDMETHOD. METHOD grade_b. SELECT SINGLE grade FROM {{p}}i_roll_grade WHERE roll_id = 'L02-R-0002' INTO @DATA(lv_grade). cl_abap_unit_assert=>assert_equals( exp = 'B' act = lv_grade ). ENDMETHOD. METHOD grade_c. SELECT SINGLE grade FROM {{p}}i_roll_grade WHERE roll_id = 'L03-R-0003' INTO @DATA(lv_grade). cl_abap_unit_assert=>assert_equals( exp = 'C' act = lv_grade ). ENDMETHOD. METHOD fibre_natural. SELECT SINGLE fibre_class FROM {{p}}i_roll_grade WHERE roll_id = 'L02-R-0002' INTO @DATA(lv_class). cl_abap_unit_assert=>assert_equals( exp = 'N' act = lv_class ). ENDMETHOD. METHOD fibre_synthetic. SELECT SINGLE fibre_class FROM {{p}}i_roll_grade WHERE roll_id = 'L03-R-0003' INTO @DATA(lv_class). cl_abap_unit_assert=>assert_equals( exp = 'S' act = lv_class ). ENDMETHOD. METHOD loom_prefix. SELECT SINGLE loom FROM {{p}}i_roll_grade WHERE roll_id = 'L02-R-0002' INTO @DATA(lv_loom). cl_abap_unit_assert=>assert_equals( exp = 'L02' act = lv_loom ). ENDMETHOD. METHOD area_rounded. SELECT SINGLE area_sqm FROM {{p}}i_roll_grade WHERE roll_id = 'L01-R-0001' INTO @DATA(lv_area). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '0.55' ) act = CONV decfloat34( lv_area ) ). ENDMETHOD. METHOD area_whole. SELECT SINGLE area_sqm FROM {{p}}i_roll_grade WHERE roll_id = 'L02-R-0002' INTO @DATA(lv_area). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '3.00' ) act = CONV decfloat34( lv_area ) ). ENDMETHOD. METHOD fabric_name. SELECT SINGLE fabric_name FROM {{p}}i_roll_grade WHERE roll_id = 'L02-R-0002' INTO @DATA(lv_name). cl_abap_unit_assert=>assert_equals( exp = 'WOOL TWILL' act = lv_name ). ENDMETHOD. METHOD roll_without_fabric. SELECT COUNT(*) FROM {{p}}i_roll_grade INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_rows ). ENDMETHOD. ENDCLASS.