Sha256: bef4a06c00f0f8dccf27a72a2e1fda0524f8ac0661cb5e800b90f05b8f58b516

Contents?: true

Size: 866 Bytes

Versions: 1

Compression:

Stored size: 866 Bytes

Contents

module VerifiedDouble
  class MethodSignatureValue
    attr_reader :value

    def initialize(value)
      @value = value
    end

    def accepts?(other)
      if self.value.is_a?(Class) || ! other.value.is_a?(Class)
        self.value == other.value
      else
        self.modified_class.ancestors.include?(other.value)
      end
    end

    def as_instance
      if self.value.is_a?(Class)
        begin
          value.new
        rescue NoMethodError
          Object.new
        end
      else
        self.value
      end
    end

    def modified_class
      if value.is_a?(VerifiedDouble::RecordingDouble)
        value.class_name.constantize
      elsif value == true or value == false
        VerifiedDouble::Boolean
      else
        value.class
      end
    end

    def recommended_value
      self.class.new(self.modified_class)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
verified_double-0.1.0 lib/verified_double/method_signature_value.rb