198 lines
9.1 KiB
ABAP
198 lines
9.1 KiB
ABAP
CLASS {{p}}laundry_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PUBLIC SECTION.
|
|
INTERFACES {{p}}if_laundry_fee.
|
|
PRIVATE SECTION.
|
|
METHODS reason_codes FOR TESTING.
|
|
METHODS item_codes FOR TESTING.
|
|
METHODS service_codes FOR TESTING.
|
|
METHODS price_table FOR TESTING.
|
|
METHODS factor_table FOR TESTING.
|
|
METHODS limit_values FOR TESTING.
|
|
METHODS char_type_lengths FOR TESTING.
|
|
METHODS amount_type FOR TESTING.
|
|
METHODS order_line_type FOR TESTING.
|
|
METHODS methods_callable FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
CLASS {{p}}laundry_hidden IMPLEMENTATION.
|
|
METHOD {{p}}if_laundry_fee~check_item.
|
|
rv_reason = {{p}}if_laundry_fee=>c_reason-ok.
|
|
ENDMETHOD.
|
|
|
|
METHOD {{p}}if_laundry_fee~calculate_fee.
|
|
rv_fee = {{p}}if_laundry_fee=>c_min_fee.
|
|
ENDMETHOD.
|
|
|
|
METHOD {{p}}if_laundry_fee~calculate_order.
|
|
rv_total = {{p}}if_laundry_fee=>c_min_fee.
|
|
ENDMETHOD.
|
|
|
|
METHOD reason_codes.
|
|
DATA lv_reason TYPE {{p}}if_laundry_fee=>ty_reason.
|
|
lv_reason = 'OK'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_reason act = {{p}}if_laundry_fee=>c_reason-ok ).
|
|
lv_reason = 'ITEM'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_reason act = {{p}}if_laundry_fee=>c_reason-item ).
|
|
lv_reason = 'SERVICE'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_reason act = {{p}}if_laundry_fee=>c_reason-service ).
|
|
lv_reason = 'QTY'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_reason act = {{p}}if_laundry_fee=>c_reason-qty ).
|
|
ENDMETHOD.
|
|
|
|
METHOD item_codes.
|
|
DATA lv_item TYPE {{p}}if_laundry_fee=>ty_item.
|
|
lv_item = 'SHIRT'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_item act = {{p}}if_laundry_fee=>c_item-shirt ).
|
|
lv_item = 'TROUS'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_item act = {{p}}if_laundry_fee=>c_item-trousers ).
|
|
lv_item = 'SUIT'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_item act = {{p}}if_laundry_fee=>c_item-suit ).
|
|
lv_item = 'COAT'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_item act = {{p}}if_laundry_fee=>c_item-coat ).
|
|
lv_item = 'DRESS'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_item act = {{p}}if_laundry_fee=>c_item-dress ).
|
|
lv_item = 'CURTAIN'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_item act = {{p}}if_laundry_fee=>c_item-curtain ).
|
|
ENDMETHOD.
|
|
|
|
METHOD service_codes.
|
|
DATA lv_service TYPE {{p}}if_laundry_fee=>ty_service.
|
|
lv_service = 'WASH'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_service act = {{p}}if_laundry_fee=>c_service-wash ).
|
|
lv_service = 'DRYC'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_service act = {{p}}if_laundry_fee=>c_service-dryc ).
|
|
lv_service = 'IRON'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_service act = {{p}}if_laundry_fee=>c_service-iron ).
|
|
lv_service = 'MEND'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_service act = {{p}}if_laundry_fee=>c_service-mend ).
|
|
ENDMETHOD.
|
|
|
|
METHOD price_table.
|
|
DATA lv_price TYPE {{p}}if_laundry_fee=>ty_amount.
|
|
lv_price = '3.50'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_price act = {{p}}if_laundry_fee=>c_price-shirt ).
|
|
lv_price = '5.00'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_price act = {{p}}if_laundry_fee=>c_price-trousers ).
|
|
lv_price = '12.00'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_price act = {{p}}if_laundry_fee=>c_price-suit ).
|
|
lv_price = '14.50'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_price act = {{p}}if_laundry_fee=>c_price-coat ).
|
|
lv_price = '8.00'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_price act = {{p}}if_laundry_fee=>c_price-dress ).
|
|
lv_price = '9.50'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_price act = {{p}}if_laundry_fee=>c_price-curtain ).
|
|
ENDMETHOD.
|
|
|
|
METHOD factor_table.
|
|
DATA lv_factor TYPE i.
|
|
lv_factor = 100.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_factor act = {{p}}if_laundry_fee=>c_factor-wash ).
|
|
lv_factor = 180.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_factor act = {{p}}if_laundry_fee=>c_factor-dryc ).
|
|
lv_factor = 40.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_factor act = {{p}}if_laundry_fee=>c_factor-iron ).
|
|
lv_factor = 220.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_factor act = {{p}}if_laundry_fee=>c_factor-mend ).
|
|
ENDMETHOD.
|
|
|
|
METHOD limit_values.
|
|
DATA lv_qty TYPE {{p}}if_laundry_fee=>ty_quantity.
|
|
DATA lv_int TYPE i.
|
|
DATA lv_fee TYPE {{p}}if_laundry_fee=>ty_amount.
|
|
lv_qty = 99.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_qty act = {{p}}if_laundry_fee=>c_max_qty ).
|
|
lv_qty = 10.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_qty act = {{p}}if_laundry_fee=>c_bulk_min_qty ).
|
|
lv_int = 10.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_int act = {{p}}if_laundry_fee=>c_bulk_discount ).
|
|
lv_int = 25.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_int act = {{p}}if_laundry_fee=>c_express_surcharge ).
|
|
lv_fee = '5.00'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_fee act = {{p}}if_laundry_fee=>c_min_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD char_type_lengths.
|
|
DATA lv_item TYPE {{p}}if_laundry_fee=>ty_item.
|
|
DATA lv_item_ref TYPE c LENGTH 7.
|
|
DATA lv_service TYPE {{p}}if_laundry_fee=>ty_service.
|
|
DATA lv_service_ref TYPE c LENGTH 4.
|
|
DATA lv_reason TYPE {{p}}if_laundry_fee=>ty_reason.
|
|
DATA lv_reason_ref TYPE c LENGTH 10.
|
|
DATA lv_flag TYPE {{p}}if_laundry_fee=>ty_flag.
|
|
DATA lv_flag_ref TYPE abap_bool.
|
|
|
|
DATA(lo_item) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( lv_item ) ).
|
|
DATA(lo_item_ref) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( lv_item_ref ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = lo_item_ref->length act = lo_item->length ).
|
|
cl_abap_unit_assert=>assert_equals( exp = lo_item_ref->type_kind act = lo_item->type_kind ).
|
|
|
|
DATA(lo_service) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( lv_service ) ).
|
|
DATA(lo_service_ref) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( lv_service_ref ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = lo_service_ref->length act = lo_service->length ).
|
|
cl_abap_unit_assert=>assert_equals( exp = lo_service_ref->type_kind act = lo_service->type_kind ).
|
|
|
|
DATA(lo_reason) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( lv_reason ) ).
|
|
DATA(lo_reason_ref) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( lv_reason_ref ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = lo_reason_ref->length act = lo_reason->length ).
|
|
cl_abap_unit_assert=>assert_equals( exp = lo_reason_ref->type_kind act = lo_reason->type_kind ).
|
|
|
|
DATA(lo_flag) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( lv_flag ) ).
|
|
DATA(lo_flag_ref) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( lv_flag_ref ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = lo_flag_ref->length act = lo_flag->length ).
|
|
cl_abap_unit_assert=>assert_equals( exp = lo_flag_ref->type_kind act = lo_flag->type_kind ).
|
|
ENDMETHOD.
|
|
|
|
METHOD amount_type.
|
|
DATA lv_amount TYPE {{p}}if_laundry_fee=>ty_amount.
|
|
DATA lv_amount_ref TYPE p LENGTH 8 DECIMALS 2.
|
|
|
|
DATA(lo_amount) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( lv_amount ) ).
|
|
DATA(lo_amount_ref) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( lv_amount_ref ) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = lo_amount_ref->type_kind act = lo_amount->type_kind ).
|
|
cl_abap_unit_assert=>assert_equals( exp = lo_amount_ref->length act = lo_amount->length ).
|
|
cl_abap_unit_assert=>assert_equals( exp = lo_amount_ref->decimals act = lo_amount->decimals ).
|
|
ENDMETHOD.
|
|
|
|
METHOD order_line_type.
|
|
DATA ls_line TYPE {{p}}if_laundry_fee=>ty_order_line.
|
|
DATA lt_lines TYPE {{p}}if_laundry_fee=>tt_order_line.
|
|
|
|
ls_line-item = {{p}}if_laundry_fee=>c_item-shirt.
|
|
ls_line-service = {{p}}if_laundry_fee=>c_service-wash.
|
|
ls_line-quantity = 3.
|
|
ls_line-express = abap_true.
|
|
APPEND ls_line TO lt_lines.
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_lines ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_laundry_fee=>c_item-shirt
|
|
act = lt_lines[ 1 ]-item ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 3 act = lt_lines[ 1 ]-quantity ).
|
|
ENDMETHOD.
|
|
|
|
METHOD methods_callable.
|
|
DATA lo_cut TYPE REF TO {{p}}if_laundry_fee.
|
|
DATA lt_lines TYPE {{p}}if_laundry_fee=>tt_order_line.
|
|
|
|
lo_cut = NEW {{p}}laundry_hidden( ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
exp = {{p}}if_laundry_fee=>c_reason-ok
|
|
act = lo_cut->check_item( iv_item = {{p}}if_laundry_fee=>c_item-shirt
|
|
iv_service = {{p}}if_laundry_fee=>c_service-wash
|
|
iv_quantity = 2 ) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
exp = {{p}}if_laundry_fee=>c_min_fee
|
|
act = lo_cut->calculate_fee( iv_item = {{p}}if_laundry_fee=>c_item-shirt
|
|
iv_service = {{p}}if_laundry_fee=>c_service-wash
|
|
iv_quantity = 2
|
|
iv_express = abap_false ) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
exp = {{p}}if_laundry_fee=>c_min_fee
|
|
act = lo_cut->calculate_order( lt_lines ) ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|