Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- REPORT zhm_videostore_kata.
- CLASS daily_rate_movie_stub DEFINITION FOR TESTING INHERITING FROM zhm_object.
- PUBLIC SECTION.
- METHODS constructor IMPORTING daily_rate TYPE REF TO zhm_object.
- METHODS calculate_price REDEFINITION.
- METHODS calculate_renter_points REDEFINITION.
- PRIVATE SECTION.
- DATA daily_rate TYPE REF TO zhm_object.
- ENDCLASS.
- CLASS daily_rate_movie_stub IMPLEMENTATION.
- METHOD constructor.
- super->constructor( ).
- me->daily_rate = daily_rate.
- ENDMETHOD.
- METHOD calculate_price.
- return = daily_rate->multiply_by( days_rented ).
- ENDMETHOD.
- METHOD calculate_renter_points.
- return = days_rented.
- ENDMETHOD.
- ENDCLASS.
- CLASS customer_stub DEFINITION FOR TESTING INHERITING FROM zhm_object.
- PUBLIC SECTION.
- METHODS constructor.
- METHODS set_renter_points REDEFINITION.
- METHODS get_renter_points REDEFINITION.
- PRIVATE SECTION.
- DATA renter_points TYPE REF TO zhm_object.
- ENDCLASS.
- CLASS customer_stub IMPLEMENTATION.
- METHOD constructor.
- super->constructor( ).
- renter_points = NEW zhm_integer( 0 ).
- ENDMETHOD.
- METHOD set_renter_points.
- me->renter_points = renter_points.
- return = me.
- ENDMETHOD.
- METHOD get_renter_points.
- return = renter_points.
- ENDMETHOD.
- ENDCLASS.
- CLASS statement DEFINITION INHERITING FROM zhm_object.
- PUBLIC SECTION.
- METHODS constructor.
- METHODS add_rental REDEFINITION.
- METHODS get_items REDEFINITION.
- METHODS get_total_price REDEFINITION.
- METHODS get_total_renter_points REDEFINITION.
- PRIVATE SECTION.
- DATA rentals TYPE REF TO zhm_object.
- ENDCLASS.
- CLASS statement IMPLEMENTATION.
- METHOD constructor.
- super->constructor( ).
- rentals = NEW zhm_list( ).
- ENDMETHOD.
- METHOD add_rental.
- rentals->add( rental ).
- return = me.
- ENDMETHOD.
- METHOD get_items.
- ENDMETHOD.
- METHOD get_total_price.
- return = rentals->map( )->get_price( )->sum( ).
- ENDMETHOD.
- METHOD get_total_renter_points.
- ENDMETHOD.
- ENDCLASS.
- CLASS rental DEFINITION INHERITING FROM zhm_object.
- PUBLIC SECTION.
- METHODS constructor IMPORTING movie TYPE REF TO zhm_object
- days TYPE REF TO zhm_object.
- METHODS get_price REDEFINITION.
- METHODS get_renter_points REDEFINITION.
- PRIVATE SECTION.
- DATA movie TYPE REF TO zhm_object.
- DATA days TYPE REF TO zhm_object.
- ENDCLASS.
- CLASS rental IMPLEMENTATION.
- METHOD constructor.
- super->constructor( ).
- me->movie = movie.
- me->days = days.
- ENDMETHOD.
- METHOD get_price.
- return = movie->calculate_price( days ).
- ENDMETHOD.
- METHOD get_renter_points.
- ENDMETHOD.
- ENDCLASS.
- CLASS test DEFINITION ABSTRACT FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
- PROTECTED SECTION.
- METHODS assert_equals IMPORTING exp TYPE REF TO zhm_object
- act TYPE REF TO zhm_object.
- ENDCLASS.
- CLASS test IMPLEMENTATION.
- METHOD assert_equals.
- IF NOT act->equals( exp )->is_true( ).
- cl_abap_unit_assert=>fail(
- |Expected { exp->to_primitive_string( ) }, got { act->to_primitive_string( ) }|
- ).
- ENDIF.
- ENDMETHOD.
- ENDCLASS.
- CLASS video_store_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT
- INHERITING FROM test.
- PRIVATE SECTION.
- DATA movie_stub TYPE REF TO zhm_object.
- DATA customer_stub TYPE REF TO zhm_object.
- DATA statement TYPE REF TO zhm_object.
- METHODS setup.
- METHODS total_price_for_one_day FOR TESTING.
- METHODS total_price_for_two_days FOR TESTING.
- ENDCLASS.
- CLASS video_store_test IMPLEMENTATION.
- METHOD setup.
- movie_stub = NEW daily_rate_movie_stub( NEW zhm_integer( 10 ) ).
- statement = NEW statement( ).
- ENDMETHOD.
- METHOD total_price_for_one_day.
- statement->add_rental( NEW rental( movie = movie_stub
- days = NEW zhm_integer( 1 ) ) ).
- assert_equals(
- exp = NEW zhm_integer( 10 )
- act = statement->get_total_price( )
- ).
- ENDMETHOD.
- METHOD total_price_for_two_days.
- statement->add_rental( NEW rental( movie = movie_stub
- days = NEW zhm_integer( 2 ) ) ).
- assert_equals(
- exp = NEW zhm_integer( 20 )
- act = statement->get_total_price( )
- ).
- ENDMETHOD.
- ENDCLASS.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement