aboutsummaryrefslogtreecommitdiffstats
path: root/spec/mspec/lib/mspec/matchers/include.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/mspec/lib/mspec/matchers/include.rb')
-rw-r--r--spec/mspec/lib/mspec/matchers/include.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/spec/mspec/lib/mspec/matchers/include.rb b/spec/mspec/lib/mspec/matchers/include.rb
new file mode 100644
index 0000000000..b4e54158d1
--- /dev/null
+++ b/spec/mspec/lib/mspec/matchers/include.rb
@@ -0,0 +1,32 @@
+class IncludeMatcher
+ def initialize(*expected)
+ @expected = expected
+ end
+
+ def matches?(actual)
+ @actual = actual
+ @expected.each do |e|
+ @element = e
+ unless @actual.include?(e)
+ return false
+ end
+ end
+ return true
+ end
+
+ def failure_message
+ ["Expected #{@actual.inspect}", "to include #{@element.inspect}"]
+ end
+
+ def negative_failure_message
+ ["Expected #{@actual.inspect}", "not to include #{@element.inspect}"]
+ end
+end
+
+# Cannot override #include at the toplevel in MRI
+module MSpec
+ def include(*expected)
+ IncludeMatcher.new(*expected)
+ end
+ module_function :include
+end