CLASS {{p}}bouquet_check_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PUBLIC SECTION. INTERFACES {{p}}if_bouquet_check. PRIVATE SECTION. METHODS band_values FOR TESTING. METHODS reason_values FOR TESTING. METHODS limit_values FOR TESTING. METHODS band_is_one_char FOR TESTING. METHODS reason_is_ten_chars FOR TESTING. METHODS result_structure FOR TESTING. METHODS call_returns_result FOR TESTING. METHODS call_with_variables FOR TESTING. ENDCLASS. CLASS {{p}}bouquet_check_hidden IMPLEMENTATION. METHOD {{p}}if_bouquet_check~check_order. rs_result = VALUE #( band = {{p}}if_bouquet_check=>c_band-large reason = {{p}}if_bouquet_check=>c_reason-ok ). ENDMETHOD. METHOD band_values. DATA lv_band TYPE {{p}}if_bouquet_check=>ty_band. lv_band = {{p}}if_bouquet_check=>c_band-small. cl_abap_unit_assert=>assert_equals( exp = 'S' act = lv_band msg = `SMALL` ). lv_band = {{p}}if_bouquet_check=>c_band-medium. cl_abap_unit_assert=>assert_equals( exp = 'M' act = lv_band msg = `MEDIUM` ). lv_band = {{p}}if_bouquet_check=>c_band-large. cl_abap_unit_assert=>assert_equals( exp = 'L' act = lv_band msg = `LARGE` ). ENDMETHOD. METHOD reason_values. DATA lv_exp TYPE {{p}}if_bouquet_check=>ty_reason. DATA lv_act TYPE {{p}}if_bouquet_check=>ty_reason. lv_exp = 'OK'. lv_act = {{p}}if_bouquet_check=>c_reason-ok. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act msg = `OK` ). lv_exp = 'INVALID'. lv_act = {{p}}if_bouquet_check=>c_reason-invalid. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act msg = `INVALID` ). lv_exp = 'SHORT'. lv_act = {{p}}if_bouquet_check=>c_reason-short. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act msg = `SHORT` ). lv_exp = 'WEIGHT'. lv_act = {{p}}if_bouquet_check=>c_reason-weight. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act msg = `WEIGHT` ). lv_exp = 'STEMS'. lv_act = {{p}}if_bouquet_check=>c_reason-stems. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_act msg = `STEMS` ). ENDMETHOD. METHOD limit_values. DATA lv_limit TYPE i. lv_limit = {{p}}if_bouquet_check=>c_limit-max_stems_small. cl_abap_unit_assert=>assert_equals( exp = 20 act = lv_limit msg = `SMALL` ). lv_limit = {{p}}if_bouquet_check=>c_limit-max_stems_medium. cl_abap_unit_assert=>assert_equals( exp = 40 act = lv_limit msg = `MEDIUM` ). lv_limit = {{p}}if_bouquet_check=>c_limit-max_stems_large. cl_abap_unit_assert=>assert_equals( exp = 60 act = lv_limit msg = `LARGE` ). lv_limit = {{p}}if_bouquet_check=>c_limit-max_weight_g. cl_abap_unit_assert=>assert_equals( exp = 3000 act = lv_limit msg = `WEIGHT` ). lv_limit = {{p}}if_bouquet_check=>c_limit-min_stem_cm. cl_abap_unit_assert=>assert_equals( exp = 40 act = lv_limit msg = `STEM` ). ENDMETHOD. METHOD band_is_one_char. DATA lv_band TYPE {{p}}if_bouquet_check=>ty_band. lv_band = 'XY'. cl_abap_unit_assert=>assert_equals( exp = 'X' act = lv_band msg = `band is one character` ). ENDMETHOD. METHOD reason_is_ten_chars. DATA lv_reason TYPE {{p}}if_bouquet_check=>ty_reason. lv_reason = 'ABCDEFGHIJKL'. cl_abap_unit_assert=>assert_equals( exp = 'ABCDEFGHIJ' act = lv_reason msg = `reason is ten characters` ). ENDMETHOD. METHOD result_structure. DATA ls_result TYPE {{p}}if_bouquet_check=>ty_result. DATA(lo_struct) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_data( ls_result ) ). DATA(lt_comp) = lo_struct->get_components( ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_comp ) ). cl_abap_unit_assert=>assert_equals( exp = 'BAND' act = to_upper( lt_comp[ 1 ]-name ) ). cl_abap_unit_assert=>assert_equals( exp = 'REASON' act = to_upper( lt_comp[ 2 ]-name ) ). ls_result-band = 'XY'. cl_abap_unit_assert=>assert_equals( exp = 'X' act = ls_result-band ). ls_result-reason = 'ABCDEFGHIJKL'. cl_abap_unit_assert=>assert_equals( exp = 'ABCDEFGHIJ' act = ls_result-reason ). ENDMETHOD. METHOD call_returns_result. DATA mo_cut TYPE REF TO {{p}}if_bouquet_check. mo_cut = NEW {{p}}bouquet_check_hidden( ). DATA(ls_result) = mo_cut->check_order( iv_stems = 30 iv_weight_g = 1200 iv_stem_cm = 50 ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_bouquet_check=>c_band-large act = ls_result-band ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_bouquet_check=>c_reason-ok act = ls_result-reason ). ENDMETHOD. METHOD call_with_variables. DATA lv_stems TYPE i VALUE 5. DATA lv_weight TYPE i VALUE 900. DATA lv_stem TYPE i VALUE 45. DATA mo_cut TYPE REF TO {{p}}if_bouquet_check. mo_cut = NEW {{p}}bouquet_check_hidden( ). DATA(ls_result) = mo_cut->check_order( iv_stems = lv_stems iv_weight_g = lv_weight iv_stem_cm = lv_stem ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_bouquet_check=>c_band-large act = ls_result-band ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_bouquet_check=>c_reason-ok act = ls_result-reason ). ENDMETHOD. ENDCLASS.