CLASS {{p}}t02_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PUBLIC SECTION. INTERFACES {{p}}if_kiln_quote. PRIVATE SECTION. METHODS kiln_codes FOR TESTING. METHODS reason_codes FOR TESTING. METHODS base_fees FOR TESTING. METHODS extra_fees FOR TESTING. METHODS load_limits FOR TESTING. METHODS reason_type_length FOR TESTING. METHODS kiln_type_length FOR TESTING. METHODS amount_decimals FOR TESTING. METHODS load_structure FOR TESTING. METHODS quote_structure FOR TESTING. METHODS methods_callable FOR TESTING. ENDCLASS. CLASS {{p}}t02_hidden IMPLEMENTATION. METHOD {{p}}if_kiln_quote~check_load. rv_reason = {{p}}if_kiln_quote=>c_reason-ok. ENDMETHOD. METHOD {{p}}if_kiln_quote~kiln_fee. rv_fee = {{p}}if_kiln_quote=>c_base_small. ENDMETHOD. METHOD {{p}}if_kiln_quote~quote. rs_quote-kiln = is_load-kiln. rs_quote-reason = {{p}}if_kiln_quote=>c_reason-ok. ENDMETHOD. METHOD kiln_codes. cl_abap_unit_assert=>assert_equals( exp = 'SMAL' act = {{p}}if_kiln_quote=>c_kiln-small ). cl_abap_unit_assert=>assert_equals( exp = 'MEDI' act = {{p}}if_kiln_quote=>c_kiln-medium ). cl_abap_unit_assert=>assert_equals( exp = 'LARG' act = {{p}}if_kiln_quote=>c_kiln-large ). ENDMETHOD. METHOD reason_codes. cl_abap_unit_assert=>assert_equals( exp = 'OK' act = {{p}}if_kiln_quote=>c_reason-ok ). cl_abap_unit_assert=>assert_equals( exp = 'KILN' act = {{p}}if_kiln_quote=>c_reason-kiln ). cl_abap_unit_assert=>assert_equals( exp = 'PIECES' act = {{p}}if_kiln_quote=>c_reason-pieces ). cl_abap_unit_assert=>assert_equals( exp = 'WEIGHT' act = {{p}}if_kiln_quote=>c_reason-weight ). ENDMETHOD. METHOD base_fees. DATA lv_exp TYPE {{p}}if_kiln_quote=>ty_amount. lv_exp = '25.00'. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = {{p}}if_kiln_quote=>c_base_small ). lv_exp = '40.00'. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = {{p}}if_kiln_quote=>c_base_medium ). lv_exp = '60.00'. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = {{p}}if_kiln_quote=>c_base_large ). ENDMETHOD. METHOD extra_fees. DATA lv_exp TYPE {{p}}if_kiln_quote=>ty_amount. lv_exp = '1.50'. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = {{p}}if_kiln_quote=>c_weight_rate ). lv_exp = '8.00'. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = {{p}}if_kiln_quote=>c_glaze_fee ). ENDMETHOD. METHOD load_limits. cl_abap_unit_assert=>assert_equals( exp = 40 act = {{p}}if_kiln_quote=>c_max_pieces ). cl_abap_unit_assert=>assert_equals( exp = 120 act = {{p}}if_kiln_quote=>c_max_weight ). ENDMETHOD. METHOD reason_type_length. DATA lv_reason TYPE {{p}}if_kiln_quote=>ty_reason. DATA lv_src TYPE string. lv_src = 'ABCDEFGHIJKLM'. lv_reason = lv_src. cl_abap_unit_assert=>assert_equals( exp = 'ABCDEFGHIJKL' act = lv_reason ). ENDMETHOD. METHOD kiln_type_length. DATA lv_kiln TYPE {{p}}if_kiln_quote=>ty_kiln. DATA lv_src TYPE string. lv_src = 'ABCDE'. lv_kiln = lv_src. cl_abap_unit_assert=>assert_equals( exp = 'ABCD' act = lv_kiln ). ENDMETHOD. METHOD amount_decimals. DATA lv_amount TYPE {{p}}if_kiln_quote=>ty_amount. cl_abap_unit_assert=>assert_equals( exp = 2 act = cl_abap_typedescr=>describe_by_data( lv_amount )->decimals ). ENDMETHOD. METHOD load_structure. DATA ls_load TYPE {{p}}if_kiln_quote=>ty_load. DATA(lo_struct) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_data( ls_load ) ). DATA(lt_comp) = lo_struct->get_components( ). cl_abap_unit_assert=>assert_equals( exp = 4 act = lines( lt_comp ) ). DATA(lv_names) = REDUCE string( INIT s TYPE string FOR ls IN lt_comp NEXT s = s && ls-name ). cl_abap_unit_assert=>assert_true( xsdbool( lv_names CS 'KILN' ) ). cl_abap_unit_assert=>assert_true( xsdbool( lv_names CS 'PIECES' ) ). cl_abap_unit_assert=>assert_true( xsdbool( lv_names CS 'WEIGHT_KG' ) ). cl_abap_unit_assert=>assert_true( xsdbool( lv_names CS 'GLAZED' ) ). ENDMETHOD. METHOD quote_structure. DATA ls_quote TYPE {{p}}if_kiln_quote=>ty_quote. DATA(lo_struct) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_data( ls_quote ) ). DATA(lt_comp) = lo_struct->get_components( ). cl_abap_unit_assert=>assert_equals( exp = 6 act = lines( lt_comp ) ). DATA(lv_names) = REDUCE string( INIT s TYPE string FOR ls IN lt_comp NEXT s = s && ls-name ). cl_abap_unit_assert=>assert_true( xsdbool( lv_names CS 'KILN' ) ). cl_abap_unit_assert=>assert_true( xsdbool( lv_names CS 'BASE' ) ). cl_abap_unit_assert=>assert_true( xsdbool( lv_names CS 'WEIGHT' ) ). cl_abap_unit_assert=>assert_true( xsdbool( lv_names CS 'GLAZE' ) ). cl_abap_unit_assert=>assert_true( xsdbool( lv_names CS 'TOTAL' ) ). cl_abap_unit_assert=>assert_true( xsdbool( lv_names CS 'REASON' ) ). ENDMETHOD. METHOD methods_callable. DATA lo_cut TYPE REF TO {{p}}if_kiln_quote. lo_cut = me. DATA ls_load TYPE {{p}}if_kiln_quote=>ty_load. ls_load-kiln = {{p}}if_kiln_quote=>c_kiln-small. ls_load-pieces = 5. ls_load-weight_kg = 10. ls_load-glazed = abap_true. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_kiln_quote=>c_reason-ok act = lo_cut->check_load( ls_load ) ). DATA(ls_quote) = lo_cut->quote( ls_load ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_kiln_quote=>c_reason-ok act = ls_quote-reason ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_kiln_quote=>c_base_small act = lo_cut->kiln_fee( {{p}}if_kiln_quote=>c_kiln-small ) ). ENDMETHOD. ENDCLASS.