# Copyright (c) 2008 Simon Menke # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # ChainingMock is the mock object returned by the Message::Recorder#record method. class Message::Recorder::ChainingMock instance_methods.each { |m| undef_method m unless m =~ /^__/ } def initialize(collector) # :nodoc: @collector = collector end def method_missing(m, *args, &block) # :nodoc: @collector.record(m, *args, &block) return self end # when a block is passed to __branch__ it will create a separate call chain for each method call. # recorder.record.__branch__ do # hello # bye # end # recorder.send_to subject # is the same as # recorder.record.hello # recorder.send_to subject # # recorder.record.bye # recorder.send_to subject def __branch__(&block) Message::Recorder::BranchingMock.new(@collector).__branch__(&block) end alias_method :with_results, :__branch__ alias_method :with_result, :__branch__ alias_method :branch, :__branch__ end