326 lines
14 KiB
ABAP
326 lines
14 KiB
ABAP
CLASS {{p}}t14_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
METHODS prepare
|
|
IMPORTING iv_week TYPE string
|
|
it_book TYPE STANDARD TABLE OF {{P}}MEALBK.
|
|
METHODS cleanup
|
|
IMPORTING iv_week TYPE string.
|
|
METHODS bill
|
|
IMPORTING iv_week TYPE string
|
|
EXPORTING ev_meals TYPE decfloat34
|
|
ev_pupils TYPE decfloat34
|
|
ev_amount TYPE decfloat34
|
|
ev_discount TYPE decfloat34
|
|
ev_subrc TYPE sysubrc.
|
|
METHODS empty_week_zero FOR TESTING.
|
|
METHODS sums_two_pupils FOR TESTING.
|
|
METHODS skips_cancelled FOR TESTING.
|
|
METHODS skips_free_meal FOR TESTING.
|
|
METHODS discount_from_five FOR TESTING.
|
|
METHODS no_discount_for_four FOR TESTING.
|
|
METHODS discount_is_per_pupil FOR TESTING.
|
|
METHODS rejects_negative_price FOR TESTING.
|
|
METHODS counts_pupils FOR TESTING.
|
|
METHODS rounds_half_up FOR TESTING.
|
|
METHODS ignores_other_weeks FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}t14_hidden IMPLEMENTATION.
|
|
METHOD prepare.
|
|
cleanup( iv_week ).
|
|
INSERT {{P}}MEALBK FROM TABLE @it_book.
|
|
ENDMETHOD.
|
|
|
|
METHOD cleanup.
|
|
DELETE FROM {{P}}MEALBK WHERE week_key = @iv_week.
|
|
ENDMETHOD.
|
|
|
|
METHOD bill.
|
|
CALL FUNCTION '{{P}}MEAL_BILL'
|
|
EXPORTING
|
|
iv_week = iv_week
|
|
IMPORTING
|
|
ev_meals = ev_meals
|
|
ev_pupils = ev_pupils
|
|
ev_amount = ev_amount
|
|
ev_discount = ev_discount
|
|
EXCEPTIONS
|
|
invalid_price = 1
|
|
OTHERS = 2.
|
|
ev_subrc = sy-subrc.
|
|
ENDMETHOD.
|
|
|
|
METHOD empty_week_zero.
|
|
DATA lv_week TYPE string VALUE 'H-EMPTY'.
|
|
|
|
cleanup( lv_week ).
|
|
|
|
bill( EXPORTING iv_week = lv_week
|
|
IMPORTING ev_meals = DATA(lv_meals)
|
|
ev_pupils = DATA(lv_pupils)
|
|
ev_amount = DATA(lv_amount)
|
|
ev_discount = DATA(lv_discount)
|
|
ev_subrc = DATA(lv_rc) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_meals ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_pupils ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_amount ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_discount ).
|
|
ENDMETHOD.
|
|
|
|
METHOD sums_two_pupils.
|
|
DATA lv_week TYPE string VALUE 'H-SUM1'.
|
|
|
|
prepare( iv_week = lv_week
|
|
it_book = VALUE #(
|
|
( week_key = 'H-SUM1' pupil = 'A' meal_no = 1 meal = 'LUNCH' price = '2.50' )
|
|
( week_key = 'H-SUM1' pupil = 'A' meal_no = 2 meal = 'LUNCH' price = '3.00' )
|
|
( week_key = 'H-SUM1' pupil = 'B' meal_no = 1 meal = 'LUNCH' price = '4.00' ) ) ).
|
|
|
|
bill( EXPORTING iv_week = lv_week
|
|
IMPORTING ev_meals = DATA(lv_meals)
|
|
ev_pupils = DATA(lv_pupils)
|
|
ev_amount = DATA(lv_amount)
|
|
ev_discount = DATA(lv_discount)
|
|
ev_subrc = DATA(lv_rc) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 3 ) act = lv_meals ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 2 ) act = lv_pupils ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '9.50' ) act = lv_amount ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_discount ).
|
|
|
|
cleanup( lv_week ).
|
|
ENDMETHOD.
|
|
|
|
METHOD skips_cancelled.
|
|
DATA lv_week TYPE string VALUE 'H-CANC'.
|
|
|
|
prepare( iv_week = lv_week
|
|
it_book = VALUE #(
|
|
( week_key = 'H-CANC' pupil = 'A' meal_no = 1 meal = 'LUNCH' price = '2.00' )
|
|
( week_key = 'H-CANC' pupil = 'A' meal_no = 2 meal = 'LUNCH' price = '5.00' cancelled = 'X' ) ) ).
|
|
|
|
bill( EXPORTING iv_week = lv_week
|
|
IMPORTING ev_meals = DATA(lv_meals)
|
|
ev_pupils = DATA(lv_pupils)
|
|
ev_amount = DATA(lv_amount)
|
|
ev_discount = DATA(lv_discount)
|
|
ev_subrc = DATA(lv_rc) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = lv_meals ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = lv_pupils ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '2.00' ) act = lv_amount ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_discount ).
|
|
|
|
cleanup( lv_week ).
|
|
ENDMETHOD.
|
|
|
|
METHOD skips_free_meal.
|
|
DATA lv_week TYPE string VALUE 'H-FREE'.
|
|
|
|
prepare( iv_week = lv_week
|
|
it_book = VALUE #(
|
|
( week_key = 'H-FREE' pupil = 'A' meal_no = 1 meal = 'LUNCH' price = '0.00' )
|
|
( week_key = 'H-FREE' pupil = 'A' meal_no = 2 meal = 'LUNCH' price = '3.00' ) ) ).
|
|
|
|
bill( EXPORTING iv_week = lv_week
|
|
IMPORTING ev_meals = DATA(lv_meals)
|
|
ev_pupils = DATA(lv_pupils)
|
|
ev_amount = DATA(lv_amount)
|
|
ev_discount = DATA(lv_discount)
|
|
ev_subrc = DATA(lv_rc) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = lv_meals ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = lv_pupils ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '3.00' ) act = lv_amount ).
|
|
|
|
cleanup( lv_week ).
|
|
ENDMETHOD.
|
|
|
|
METHOD discount_from_five.
|
|
DATA lv_week TYPE string VALUE 'H-DISC'.
|
|
|
|
prepare( iv_week = lv_week
|
|
it_book = VALUE #(
|
|
( week_key = 'H-DISC' pupil = 'A' meal_no = 1 meal = 'LUNCH' price = '9.99' )
|
|
( week_key = 'H-DISC' pupil = 'A' meal_no = 2 meal = 'LUNCH' price = '9.99' )
|
|
( week_key = 'H-DISC' pupil = 'A' meal_no = 3 meal = 'LUNCH' price = '9.99' )
|
|
( week_key = 'H-DISC' pupil = 'A' meal_no = 4 meal = 'LUNCH' price = '9.99' )
|
|
( week_key = 'H-DISC' pupil = 'A' meal_no = 5 meal = 'LUNCH' price = '9.99' ) ) ).
|
|
|
|
bill( EXPORTING iv_week = lv_week
|
|
IMPORTING ev_meals = DATA(lv_meals)
|
|
ev_pupils = DATA(lv_pupils)
|
|
ev_amount = DATA(lv_amount)
|
|
ev_discount = DATA(lv_discount)
|
|
ev_subrc = DATA(lv_rc) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 5 ) act = lv_meals ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = lv_pupils ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '44.96' ) act = lv_amount ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '4.99' ) act = lv_discount ).
|
|
|
|
cleanup( lv_week ).
|
|
ENDMETHOD.
|
|
|
|
METHOD no_discount_for_four.
|
|
DATA lv_week TYPE string VALUE 'H-NODS'.
|
|
|
|
prepare( iv_week = lv_week
|
|
it_book = VALUE #(
|
|
( week_key = 'H-NODS' pupil = 'A' meal_no = 1 meal = 'LUNCH' price = '9.99' )
|
|
( week_key = 'H-NODS' pupil = 'A' meal_no = 2 meal = 'LUNCH' price = '9.99' )
|
|
( week_key = 'H-NODS' pupil = 'A' meal_no = 3 meal = 'LUNCH' price = '9.99' )
|
|
( week_key = 'H-NODS' pupil = 'A' meal_no = 4 meal = 'LUNCH' price = '9.99' ) ) ).
|
|
|
|
bill( EXPORTING iv_week = lv_week
|
|
IMPORTING ev_meals = DATA(lv_meals)
|
|
ev_pupils = DATA(lv_pupils)
|
|
ev_amount = DATA(lv_amount)
|
|
ev_discount = DATA(lv_discount)
|
|
ev_subrc = DATA(lv_rc) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 4 ) act = lv_meals ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '39.96' ) act = lv_amount ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_discount ).
|
|
|
|
cleanup( lv_week ).
|
|
ENDMETHOD.
|
|
|
|
METHOD discount_is_per_pupil.
|
|
DATA lv_week TYPE string VALUE 'H-PERP'.
|
|
|
|
prepare( iv_week = lv_week
|
|
it_book = VALUE #(
|
|
( week_key = 'H-PERP' pupil = 'A' meal_no = 1 meal = 'LUNCH' price = '10.00' )
|
|
( week_key = 'H-PERP' pupil = 'A' meal_no = 2 meal = 'LUNCH' price = '10.00' )
|
|
( week_key = 'H-PERP' pupil = 'A' meal_no = 3 meal = 'LUNCH' price = '10.00' )
|
|
( week_key = 'H-PERP' pupil = 'A' meal_no = 4 meal = 'LUNCH' price = '10.00' )
|
|
( week_key = 'H-PERP' pupil = 'A' meal_no = 5 meal = 'LUNCH' price = '10.00' )
|
|
( week_key = 'H-PERP' pupil = 'B' meal_no = 1 meal = 'LUNCH' price = '10.00' )
|
|
( week_key = 'H-PERP' pupil = 'B' meal_no = 2 meal = 'LUNCH' price = '10.00' )
|
|
( week_key = 'H-PERP' pupil = 'B' meal_no = 3 meal = 'LUNCH' price = '10.00' )
|
|
( week_key = 'H-PERP' pupil = 'B' meal_no = 4 meal = 'LUNCH' price = '10.00' ) ) ).
|
|
|
|
bill( EXPORTING iv_week = lv_week
|
|
IMPORTING ev_meals = DATA(lv_meals)
|
|
ev_pupils = DATA(lv_pupils)
|
|
ev_amount = DATA(lv_amount)
|
|
ev_discount = DATA(lv_discount)
|
|
ev_subrc = DATA(lv_rc) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 9 ) act = lv_meals ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 2 ) act = lv_pupils ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '85.00' ) act = lv_amount ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '5.00' ) act = lv_discount ).
|
|
|
|
cleanup( lv_week ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_negative_price.
|
|
DATA lv_week TYPE string VALUE 'H-NEG'.
|
|
|
|
prepare( iv_week = lv_week
|
|
it_book = VALUE #(
|
|
( week_key = 'H-NEG' pupil = 'A' meal_no = 1 meal = 'LUNCH' price = '2.00' )
|
|
( week_key = 'H-NEG' pupil = 'B' meal_no = 1 meal = 'LUNCH' price = '-1.00' ) ) ).
|
|
|
|
bill( EXPORTING iv_week = lv_week
|
|
IMPORTING ev_meals = DATA(lv_meals)
|
|
ev_pupils = DATA(lv_pupils)
|
|
ev_amount = DATA(lv_amount)
|
|
ev_discount = DATA(lv_discount)
|
|
ev_subrc = DATA(lv_rc) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ).
|
|
|
|
cleanup( lv_week ).
|
|
ENDMETHOD.
|
|
|
|
METHOD counts_pupils.
|
|
DATA lv_week TYPE string VALUE 'H-PUPL'.
|
|
|
|
prepare( iv_week = lv_week
|
|
it_book = VALUE #(
|
|
( week_key = 'H-PUPL' pupil = 'A' meal_no = 1 meal = 'LUNCH' price = '2.00' )
|
|
( week_key = 'H-PUPL' pupil = 'B' meal_no = 1 meal = 'LUNCH' price = '3.00' cancelled = 'X' )
|
|
( week_key = 'H-PUPL' pupil = 'C' meal_no = 1 meal = 'LUNCH' price = '0.00' ) ) ).
|
|
|
|
bill( EXPORTING iv_week = lv_week
|
|
IMPORTING ev_meals = DATA(lv_meals)
|
|
ev_pupils = DATA(lv_pupils)
|
|
ev_amount = DATA(lv_amount)
|
|
ev_discount = DATA(lv_discount)
|
|
ev_subrc = DATA(lv_rc) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = lv_meals ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = lv_pupils ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '2.00' ) act = lv_amount ).
|
|
|
|
cleanup( lv_week ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rounds_half_up.
|
|
DATA lv_week TYPE string VALUE 'H-RND'.
|
|
|
|
prepare( iv_week = lv_week
|
|
it_book = VALUE #(
|
|
( week_key = 'H-RND' pupil = 'A' meal_no = 1 meal = 'LUNCH' price = '1.01' )
|
|
( week_key = 'H-RND' pupil = 'A' meal_no = 2 meal = 'LUNCH' price = '1.01' )
|
|
( week_key = 'H-RND' pupil = 'A' meal_no = 3 meal = 'LUNCH' price = '1.01' )
|
|
( week_key = 'H-RND' pupil = 'A' meal_no = 4 meal = 'LUNCH' price = '1.01' )
|
|
( week_key = 'H-RND' pupil = 'A' meal_no = 5 meal = 'LUNCH' price = '1.01' ) ) ).
|
|
|
|
bill( EXPORTING iv_week = lv_week
|
|
IMPORTING ev_meals = DATA(lv_meals)
|
|
ev_pupils = DATA(lv_pupils)
|
|
ev_amount = DATA(lv_amount)
|
|
ev_discount = DATA(lv_discount)
|
|
ev_subrc = DATA(lv_rc) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 5 ) act = lv_meals ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '4.55' ) act = lv_amount ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '0.50' ) act = lv_discount ).
|
|
|
|
cleanup( lv_week ).
|
|
ENDMETHOD.
|
|
|
|
METHOD ignores_other_weeks.
|
|
DATA lv_week TYPE string VALUE 'H-OTHR'.
|
|
DATA lv_other TYPE string VALUE 'H-OTHR2'.
|
|
|
|
prepare( iv_week = lv_week
|
|
it_book = VALUE #(
|
|
( week_key = 'H-OTHR' pupil = 'A' meal_no = 1 meal = 'LUNCH' price = '2.00' ) ) ).
|
|
|
|
prepare( iv_week = lv_other
|
|
it_book = VALUE #(
|
|
( week_key = 'H-OTHR2' pupil = 'A' meal_no = 1 meal = 'LUNCH' price = '9.00' ) ) ).
|
|
|
|
bill( EXPORTING iv_week = lv_week
|
|
IMPORTING ev_meals = DATA(lv_meals)
|
|
ev_pupils = DATA(lv_pupils)
|
|
ev_amount = DATA(lv_amount)
|
|
ev_discount = DATA(lv_discount)
|
|
ev_subrc = DATA(lv_rc) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = lv_meals ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '2.00' ) act = lv_amount ).
|
|
|
|
cleanup( lv_week ).
|
|
cleanup( lv_other ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|