Advertisement
Guest User

Untitled

a guest
Feb 19th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.17 KB | None | 0 0
  1. REPORT zhm_videostore_kata.
  2.  
  3. CLASS daily_rate_movie_stub DEFINITION FOR TESTING INHERITING FROM zhm_object.
  4. PUBLIC SECTION.
  5. METHODS constructor IMPORTING daily_rate TYPE REF TO zhm_object.
  6. METHODS calculate_price REDEFINITION.
  7. METHODS calculate_renter_points REDEFINITION.
  8. PRIVATE SECTION.
  9. DATA daily_rate TYPE REF TO zhm_object.
  10. ENDCLASS.
  11. CLASS daily_rate_movie_stub IMPLEMENTATION.
  12. METHOD constructor.
  13. super->constructor( ).
  14. me->daily_rate = daily_rate.
  15. ENDMETHOD.
  16.  
  17. METHOD calculate_price.
  18. return = daily_rate->multiply_by( days_rented ).
  19. ENDMETHOD.
  20.  
  21. METHOD calculate_renter_points.
  22. return = days_rented.
  23. ENDMETHOD.
  24. ENDCLASS.
  25.  
  26. CLASS customer_stub DEFINITION FOR TESTING INHERITING FROM zhm_object.
  27. PUBLIC SECTION.
  28. METHODS constructor.
  29. METHODS set_renter_points REDEFINITION.
  30. METHODS get_renter_points REDEFINITION.
  31. PRIVATE SECTION.
  32. DATA renter_points TYPE REF TO zhm_object.
  33. ENDCLASS.
  34. CLASS customer_stub IMPLEMENTATION.
  35. METHOD constructor.
  36. super->constructor( ).
  37. renter_points = NEW zhm_integer( 0 ).
  38. ENDMETHOD.
  39.  
  40. METHOD set_renter_points.
  41. me->renter_points = renter_points.
  42. return = me.
  43. ENDMETHOD.
  44.  
  45. METHOD get_renter_points.
  46. return = renter_points.
  47. ENDMETHOD.
  48. ENDCLASS.
  49.  
  50. CLASS statement DEFINITION INHERITING FROM zhm_object.
  51. PUBLIC SECTION.
  52. METHODS constructor.
  53. METHODS add_rental REDEFINITION.
  54. METHODS get_items REDEFINITION.
  55. METHODS get_total_price REDEFINITION.
  56. METHODS get_total_renter_points REDEFINITION.
  57. PRIVATE SECTION.
  58. DATA rentals TYPE REF TO zhm_object.
  59. ENDCLASS.
  60. CLASS statement IMPLEMENTATION.
  61. METHOD constructor.
  62. super->constructor( ).
  63. rentals = NEW zhm_list( ).
  64. ENDMETHOD.
  65.  
  66. METHOD add_rental.
  67. rentals->add( rental ).
  68. return = me.
  69. ENDMETHOD.
  70.  
  71. METHOD get_items.
  72.  
  73. ENDMETHOD.
  74.  
  75. METHOD get_total_price.
  76. return = rentals->map( )->get_price( )->sum( ).
  77. ENDMETHOD.
  78.  
  79. METHOD get_total_renter_points.
  80.  
  81. ENDMETHOD.
  82. ENDCLASS.
  83.  
  84. CLASS rental DEFINITION INHERITING FROM zhm_object.
  85. PUBLIC SECTION.
  86. METHODS constructor IMPORTING movie TYPE REF TO zhm_object
  87. days TYPE REF TO zhm_object.
  88. METHODS get_price REDEFINITION.
  89. METHODS get_renter_points REDEFINITION.
  90. PRIVATE SECTION.
  91. DATA movie TYPE REF TO zhm_object.
  92. DATA days TYPE REF TO zhm_object.
  93. ENDCLASS.
  94. CLASS rental IMPLEMENTATION.
  95. METHOD constructor.
  96. super->constructor( ).
  97. me->movie = movie.
  98. me->days = days.
  99. ENDMETHOD.
  100.  
  101. METHOD get_price.
  102. return = movie->calculate_price( days ).
  103. ENDMETHOD.
  104.  
  105. METHOD get_renter_points.
  106.  
  107. ENDMETHOD.
  108. ENDCLASS.
  109.  
  110. CLASS test DEFINITION ABSTRACT FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
  111. PROTECTED SECTION.
  112. METHODS assert_equals IMPORTING exp TYPE REF TO zhm_object
  113. act TYPE REF TO zhm_object.
  114. ENDCLASS.
  115. CLASS test IMPLEMENTATION.
  116. METHOD assert_equals.
  117. IF NOT act->equals( exp )->is_true( ).
  118. cl_abap_unit_assert=>fail(
  119. |Expected { exp->to_primitive_string( ) }, got { act->to_primitive_string( ) }|
  120. ).
  121. ENDIF.
  122. ENDMETHOD.
  123. ENDCLASS.
  124.  
  125. CLASS video_store_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT
  126. INHERITING FROM test.
  127. PRIVATE SECTION.
  128. DATA movie_stub TYPE REF TO zhm_object.
  129. DATA customer_stub TYPE REF TO zhm_object.
  130. DATA statement TYPE REF TO zhm_object.
  131. METHODS setup.
  132. METHODS total_price_for_one_day FOR TESTING.
  133. METHODS total_price_for_two_days FOR TESTING.
  134. ENDCLASS.
  135. CLASS video_store_test IMPLEMENTATION.
  136. METHOD setup.
  137. movie_stub = NEW daily_rate_movie_stub( NEW zhm_integer( 10 ) ).
  138. statement = NEW statement( ).
  139. ENDMETHOD.
  140.  
  141. METHOD total_price_for_one_day.
  142. statement->add_rental( NEW rental( movie = movie_stub
  143. days = NEW zhm_integer( 1 ) ) ).
  144. assert_equals(
  145. exp = NEW zhm_integer( 10 )
  146. act = statement->get_total_price( )
  147. ).
  148. ENDMETHOD.
  149.  
  150. METHOD total_price_for_two_days.
  151. statement->add_rental( NEW rental( movie = movie_stub
  152. days = NEW zhm_integer( 2 ) ) ).
  153. assert_equals(
  154. exp = NEW zhm_integer( 20 )
  155. act = statement->get_total_price( )
  156. ).
  157. ENDMETHOD.
  158. ENDCLASS.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement