CLASS {{p}}mix_recipe_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PUBLIC SECTION. INTERFACES {{p}}if_mix_recipe. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}if_mix_recipe. METHODS setup. METHODS valid_order_is_ok FOR TESTING. METHODS unknown_grade_is_rejected FOR TESTING. METHODS volume_out_of_range FOR TESTING. METHODS mix_of_small_order FOR TESTING. METHODS mix_of_large_order FOR TESTING. METHODS invalid_order_has_no_mix FOR TESTING. ENDCLASS. CLASS {{p}}mix_recipe_test IMPLEMENTATION. METHOD setup. mo_cut = me. ENDMETHOD. METHOD valid_order_is_ok. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_status-ok act = mo_cut->check_order( iv_grade = 'C25' iv_volume = '1.30' ) ). ENDMETHOD. METHOD unknown_grade_is_rejected. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_status-grade act = mo_cut->check_order( iv_grade = 'C40' iv_volume = '5.00' ) ). ENDMETHOD. METHOD volume_out_of_range. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_status-volume act = mo_cut->check_order( iv_grade = 'C20' iv_volume = '25.00' ) ). ENDMETHOD. METHOD mix_of_small_order. DATA(ls_mix) = mo_cut->mix_for( iv_grade = 'C25' iv_volume = '1.30' ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '458.00' ) act = ls_mix-cement_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '1001.00' ) act = ls_mix-sand_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '1659.00' ) act = ls_mix-gravel_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '251.00' ) act = ls_mix-water_l ). ENDMETHOD. METHOD mix_of_large_order. DATA(ls_mix) = mo_cut->mix_for( iv_grade = 'C35' iv_volume = '5.00' ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '2000.00' ) act = ls_mix-cement_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '3300.00' ) act = ls_mix-sand_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '5600.00' ) act = ls_mix-gravel_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '825.00' ) act = ls_mix-water_l ). ENDMETHOD. METHOD invalid_order_has_no_mix. DATA(ls_mix) = mo_cut->mix_for( iv_grade = 'C40' iv_volume = '5.00' ). cl_abap_unit_assert=>assert_initial( act = ls_mix-grade ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '0.00' ) act = ls_mix-cement_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '0.00' ) act = ls_mix-water_l ). ENDMETHOD. ENDCLASS.