CLASS {{p}}t02_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}if_mix_recipe. METHODS setup. METHODS constants_are_fixed FOR TESTING. METHODS type_lengths_are_fixed FOR TESTING. METHODS check_accepts_order FOR TESTING. METHODS check_rejects_grade FOR TESTING. METHODS check_rejects_volume FOR TESTING. METHODS check_grade_before_volume FOR TESTING. METHODS mix_without_surcharge FOR TESTING. METHODS mix_with_surcharge FOR TESTING. METHODS mix_at_min_volume FOR TESTING. METHODS mix_grade_is_upper FOR TESTING. METHODS mix_of_invalid_order FOR TESTING. ENDCLASS. CLASS ltc_mix DEFINITION FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES {{p}}if_mix_recipe. ENDCLASS. CLASS ltc_mix IMPLEMENTATION. ENDCLASS. CLASS {{p}}t02_hidden IMPLEMENTATION. METHOD setup. mo_cut = NEW ltc_mix( ). ENDMETHOD. METHOD constants_are_fixed. cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_grade( 'C20' ) act = {{p}}if_mix_recipe=>c_grade-c20 ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_grade( 'C25' ) act = {{p}}if_mix_recipe=>c_grade-c25 ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_grade( 'C30' ) act = {{p}}if_mix_recipe=>c_grade-c30 ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_grade( 'C35' ) act = {{p}}if_mix_recipe=>c_grade-c35 ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_status( 'OK' ) act = {{p}}if_mix_recipe=>c_status-ok ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_status( 'GRADE' ) act = {{p}}if_mix_recipe=>c_status-grade ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_status( 'VOLUME' ) act = {{p}}if_mix_recipe=>c_status-volume ). ENDMETHOD. METHOD type_lengths_are_fixed. DATA(lo_grade) = cl_abap_typedescr=>describe_by_name( '{{P}}IF_MIX_RECIPE=>TY_GRADE' ). cl_abap_unit_assert=>assert_equals( exp = 4 act = lo_grade->length ). DATA(lo_status) = cl_abap_typedescr=>describe_by_name( '{{P}}IF_MIX_RECIPE=>TY_STATUS' ). cl_abap_unit_assert=>assert_equals( exp = 10 act = lo_status->length ). DATA(lo_qty) = cl_abap_typedescr=>describe_by_name( '{{P}}IF_MIX_RECIPE=>TY_QTY' ). cl_abap_unit_assert=>assert_equals( exp = 8 act = lo_qty->length ). DATA(lo_elem) = CAST cl_abap_elemdescr( lo_qty ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lo_elem->decimals ). ENDMETHOD. METHOD check_accepts_order. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_status-ok act = mo_cut->check_order( iv_grade = 'C20' iv_volume = '2.50' ) ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_status-ok act = mo_cut->check_order( iv_grade = 'c35' iv_volume = '20.00' ) ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_status-ok act = mo_cut->check_order( iv_grade = 'C30' iv_volume = '0.50' ) ). ENDMETHOD. METHOD check_rejects_grade. 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' ) ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_status-grade act = mo_cut->check_order( iv_grade = ' ' iv_volume = '5.00' ) ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_status-grade act = mo_cut->check_order( iv_grade = 'C2' iv_volume = '5.00' ) ). ENDMETHOD. METHOD check_rejects_volume. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_status-volume act = mo_cut->check_order( iv_grade = 'C20' iv_volume = '0.49' ) ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_status-volume act = mo_cut->check_order( iv_grade = 'C20' iv_volume = '20.01' ) ). ENDMETHOD. METHOD check_grade_before_volume. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_status-grade act = mo_cut->check_order( iv_grade = 'C40' iv_volume = '0.10' ) ). ENDMETHOD. METHOD mix_without_surcharge. DATA(ls_mix) = mo_cut->mix_for( iv_grade = 'C20' iv_volume = '2.50' ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '700.00' ) act = ls_mix-cement_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '1800.00' ) act = ls_mix-sand_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '2950.00' ) act = ls_mix-gravel_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '438.00' ) act = ls_mix-water_l ). DATA(ls_large) = mo_cut->mix_for( iv_grade = 'C30' iv_volume = '5.00' ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '1800.00' ) act = ls_large-cement_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '3400.00' ) act = ls_large-sand_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '5700.00' ) act = ls_large-gravel_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '850.00' ) act = ls_large-water_l ). ENDMETHOD. METHOD mix_with_surcharge. DATA(ls_small) = 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_small-cement_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '1001.00' ) act = ls_small-sand_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '1659.00' ) act = ls_small-gravel_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '251.00' ) act = ls_small-water_l ). DATA(ls_tiny) = mo_cut->mix_for( iv_grade = 'C35' iv_volume = '0.80' ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '352.00' ) act = ls_tiny-cement_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '581.00' ) act = ls_tiny-sand_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '986.00' ) act = ls_tiny-gravel_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '146.00' ) act = ls_tiny-water_l ). ENDMETHOD. METHOD mix_at_min_volume. DATA(ls_min) = mo_cut->mix_for( iv_grade = 'C25' iv_volume = '0.50' ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '176.00' ) act = ls_min-cement_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '385.00' ) act = ls_min-sand_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '638.00' ) act = ls_min-gravel_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '97.00' ) act = ls_min-water_l ). DATA(ls_limit) = mo_cut->mix_for( iv_grade = 'C20' iv_volume = '2.00' ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '560.00' ) act = ls_limit-cement_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '1440.00' ) act = ls_limit-sand_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '2360.00' ) act = ls_limit-gravel_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '350.00' ) act = ls_limit-water_l ). ENDMETHOD. METHOD mix_grade_is_upper. DATA(ls_mix) = mo_cut->mix_for( iv_grade = 'c35' iv_volume = '5.00' ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_mix_recipe=>c_grade-c35 act = ls_mix-grade ). 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 mix_of_invalid_order. DATA(ls_bad_grade) = mo_cut->mix_for( iv_grade = 'C40' iv_volume = '5.00' ). cl_abap_unit_assert=>assert_initial( act = ls_bad_grade-grade ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '0.00' ) act = ls_bad_grade-cement_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '0.00' ) act = ls_bad_grade-sand_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '0.00' ) act = ls_bad_grade-gravel_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '0.00' ) act = ls_bad_grade-water_l ). DATA(ls_bad_volume) = mo_cut->mix_for( iv_grade = 'C20' iv_volume = '0.10' ). cl_abap_unit_assert=>assert_initial( act = ls_bad_volume-grade ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '0.00' ) act = ls_bad_volume-cement_kg ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}if_mix_recipe=>ty_qty( '0.00' ) act = ls_bad_volume-water_l ). ENDMETHOD. ENDCLASS.