CLASS {{p}}mix_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS price_of IMPORTING it_tints TYPE {{P}}PAINT_MIX=>TY_TINTS EXPORTING ev_volume TYPE decfloat34 ev_price TYPE decfloat34 ev_subrc TYPE sysubrc. METHODS two_tints FOR TESTING. METHODS repeated_tint FOR TESTING. METHODS empty_order FOR TESTING. METHODS bad_quantity FOR TESTING. METHODS unknown_tint FOR TESTING. ENDCLASS. CLASS {{p}}mix_test IMPLEMENTATION. METHOD price_of. CALL FUNCTION '{{P}}MIX_PRICE' EXPORTING it_tints = it_tints IMPORTING ev_volume = ev_volume ev_price = ev_price EXCEPTIONS no_components = 1 invalid_quantity = 2 unknown_tint = 3 OTHERS = 4. ev_subrc = sy-subrc. ENDMETHOD. METHOD two_tints. price_of( EXPORTING it_tints = VALUE #( ( tint_id = 'WHIT' quantity_ml = 1000 ) ( tint_id = 'BLUE' quantity_ml = 200 ) ) IMPORTING ev_volume = DATA(lv_volume) ev_price = DATA(lv_price) ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_subrc ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1200 ) act = lv_volume ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 32 ) act = lv_price ). ENDMETHOD. METHOD repeated_tint. price_of( EXPORTING it_tints = VALUE #( ( tint_id = 'GREY' quantity_ml = 200 ) ( tint_id = 'GREY' quantity_ml = 300 ) ) IMPORTING ev_volume = DATA(lv_volume) ev_price = DATA(lv_price) ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_subrc ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 500 ) act = lv_volume ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '16.5' ) act = lv_price ). ENDMETHOD. METHOD empty_order. DATA lt_tints TYPE {{P}}PAINT_MIX=>TY_TINTS. price_of( EXPORTING it_tints = lt_tints IMPORTING ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ). ENDMETHOD. METHOD bad_quantity. price_of( EXPORTING it_tints = VALUE #( ( tint_id = 'GOLD' quantity_ml = -1 ) ) IMPORTING ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_subrc ). ENDMETHOD. METHOD unknown_tint. price_of( EXPORTING it_tints = VALUE #( ( tint_id = 'ZZZZ' quantity_ml = 10 ) ) IMPORTING ev_subrc = DATA(lv_subrc) ). cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_subrc ). ENDMETHOD. ENDCLASS.