lib/caricature/clr/isolation.rb in caricature-0.7.5 vs lib/caricature/clr/isolation.rb in caricature-0.7.6

- old
+ new

@@ -1,79 +1,79 @@ -module Caricature - - - - class Isolation # :nodoc: - - # the event subscriptions collected at runtime - attr_reader :events - - # the event subscriptions collected at runtime - def events - @events ||= {} - end - - # adds an event subscription - def add_event_subscription(event_name, mode, handler) - events[mode] ||= {} - nm = event_name_for(event_name) - events[mode][nm] ||= [] - events[mode][nm] << handler - end - - # removes an event subscription - def remove_event_subscription(event_name, mode, handler) - ((events[mode] ||= {})[event_name_for(event_name)] ||=[]).delete(handler) - end - - # def add_event_expectation(name, mode, *args, &handler) - # end - - def internal_create_override(method_name, mode=:instance, &block) - builder = ExpectationBuilder.new method_name - block.call builder unless block.nil? - exp = builder.build - exp.events = events[mode] - expectations.add_expectation exp, mode - exp - end - - def verify_event_raise(event_name, mode= :instance, &block) - verification = EventVerification.new(event_name, recorder, mode) - block.call verification unless block.nil? - verification - end - - class << self - - # Creates an isolation object complete with proxy and method call recorder - # It works out which isolation it needs to create and provide and initializes the - # method call recorder - def for(subject, recorder = MethodCallRecorder.new, expectations = Expectations.new) - context = IsolatorContext.new subject, recorder, expectations - isolation_strategy = subject.clr_type? ? get_clr_isolation_strategy(subject) : RubyIsolator - - isolator = isolation_strategy.for context - new(isolator, context) - isolator.isolation - end - - private - - # decides which startegy to use for mocking a CLR object. - # When the provided subject is an interface it will return a +ClrInterfaceIsolator+ - # otherwise it will return a +ClrIsolator+ - def get_clr_isolation_strategy(subject) - return ClrInterfaceIsolator if subject.respond_to? :class_eval and !subject.respond_to? :new - ClrIsolator - end - end - - private - - def event_name_for(method_name) #:nodoc: - method_name.gsub(/^(add|remove)_/, '').underscore.to_sym - end - - end - +module Caricature + + + + class Isolation # :nodoc: + + # the event subscriptions collected at runtime + attr_reader :events + + # the event subscriptions collected at runtime + def events + @events ||= {} + end + + # adds an event subscription + def add_event_subscription(event_name, mode, handler) + events[mode] ||= {} + nm = event_name_for(event_name) + events[mode][nm] ||= [] + events[mode][nm] << handler + end + + # removes an event subscription + def remove_event_subscription(event_name, mode, handler) + ((events[mode] ||= {})[event_name_for(event_name)] ||=[]).delete(handler) + end + + # def add_event_expectation(name, mode, *args, &handler) + # end + + def internal_create_override(method_name, mode=:instance, &block) + builder = ExpectationBuilder.new method_name + block.call builder unless block.nil? + exp = builder.build + exp.events = events[mode] + expectations.add_expectation exp, mode + exp + end + + def verify_event_raise(event_name, mode= :instance, &block) + verification = EventVerification.new(event_name, recorder, mode) + block.call verification unless block.nil? + verification + end + + class << self + + # Creates an isolation object complete with proxy and method call recorder + # It works out which isolation it needs to create and provide and initializes the + # method call recorder + def for(subject, recorder = MethodCallRecorder.new, expectations = Expectations.new) + context = IsolatorContext.new subject, recorder, expectations + isolation_strategy = subject.clr_type? ? get_clr_isolation_strategy(subject) : RubyIsolator + + isolator = isolation_strategy.for context + new(isolator, context) + isolator.isolation + end + + private + + # decides which startegy to use for mocking a CLR object. + # When the provided subject is an interface it will return a +ClrInterfaceIsolator+ + # otherwise it will return a +ClrIsolator+ + def get_clr_isolation_strategy(subject) + return ClrInterfaceIsolator if subject.respond_to? :class_eval and !subject.respond_to? :new + ClrIsolator + end + end + + private + + def event_name_for(method_name) #:nodoc: + method_name.gsub(/^(add|remove)_/, '').underscore.to_sym + end + + end + end \ No newline at end of file