Add tests for multiple arguments

This commit is contained in:
Michael Miller 2019-02-01 20:44:25 -07:00
parent 239779135f
commit ade4af0153

View file

@ -3,6 +3,7 @@ require "../spec_helper"
describe Spectator::Matchers::HaveMatcher do describe Spectator::Matchers::HaveMatcher do
describe "#match?" do describe "#match?" do
context "with a String" do context "with a String" do
context "one argument" do
context "against a matching string" do context "against a matching string" do
it "is true" do it "is true" do
value = "foobarbaz" value = "foobarbaz"
@ -84,7 +85,111 @@ describe Spectator::Matchers::HaveMatcher do
end end
end end
context "multiple arguments" do
context "against matching strings" do
it "is true" do
value = "foobarbaz"
search = {"foo", "bar", "baz"}
partial = Spectator::Expectations::ValueExpectationPartial.new(value)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_true
end
end
context "against one matching string" do
it "is false" do
value = "foobarbaz"
search = {"foo", "qux"}
partial = Spectator::Expectations::ValueExpectationPartial.new(value)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against no matching strings" do
it "is false" do
value = "foobar"
search = {"baz", "qux"}
partial = Spectator::Expectations::ValueExpectationPartial.new(value)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against matching characters" do
it "is true" do
value = "foobarbaz"
search = {'f', 'b', 'z'}
partial = Spectator::Expectations::ValueExpectationPartial.new(value)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_true
end
end
context "against one matching character" do
it "is false" do
value = "foobarbaz"
search = {'f', 'c', 'd'}
partial = Spectator::Expectations::ValueExpectationPartial.new(value)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against no matching characters" do
it "is false" do
value = "foobarbaz"
search = {'c', 'd', 'e'}
partial = Spectator::Expectations::ValueExpectationPartial.new(value)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against a matching string and character" do
it "is true" do
value = "foobarbaz"
search = {"foo", 'z'}
partial = Spectator::Expectations::ValueExpectationPartial.new(value)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_true
end
end
context "against a matching string and non-matching character" do
it "is false" do
value = "foobarbaz"
search = {"foo", 'c'}
partial = Spectator::Expectations::ValueExpectationPartial.new(value)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against a non-matching string and matching character" do
it "is false" do
value = "foobarbaz"
search = {"qux", 'f'}
partial = Spectator::Expectations::ValueExpectationPartial.new(value)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against a non-matching string and character" do
it "is false" do
value = "foobarbaz"
search = {"qux", 'c'}
partial = Spectator::Expectations::ValueExpectationPartial.new(value)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
end
end
context "with an Enumberable" do context "with an Enumberable" do
context "one argument" do
context "against an equal value" do context "against an equal value" do
it "is true" do it "is true" do
array = %i[a b c] array = %i[a b c]
@ -201,6 +306,153 @@ describe Spectator::Matchers::HaveMatcher do
end end
end end
end end
context "multiple arguments" do
context "against equal values" do
it "is true" do
array = %i[a b c]
search = {:a, :b}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_true
end
context "matching type" do
context "matching regex" do
it "is true" do
array = [:a, 42, "FOO"]
search = {:a, Int32, /foo/i}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_true
end
end
context "non-matching regex" do
it "is false" do
array = [:a, 42, "FOO"]
search = {:a, Int32, /bar/i}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
end
context "non-matching type" do
context "matching regex" do
it "is false" do
array = [:a, 42, "FOO"]
search = {:a, Float32, /foo/i}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "non-matching regex" do
it "is false" do
array = [:a, 42, "FOO"]
search = {:a, Float32, /bar/i}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
end
end
context "against one equal value" do
it "is false" do
array = %i[a b c]
search = {:a, :d}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against no equal values" do
it "is false" do
array = %i[a b c]
search = {:d, :e}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against matching types" do
it "is true" do
array = [:a, 42, "FOO"]
search = {Symbol, String}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_true
end
end
context "against one matching type" do
it "is false" do
array = [:a, 42, "FOO"]
search = {Symbol, Float32}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against no matching types" do
it "is false" do
array = [:a, 42, "FOO"]
search = {Float32, Bytes}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against matching regexes" do
it "is true" do
array = %w[FOO BAR BAZ]
search = {/foo/i, /bar/i}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_true
end
end
context "against one matching regex" do
it "is false" do
array = %w[FOO BAR BAZ]
search = {/foo/i, /qux/i}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against no matching regexes" do
it "is false" do
array = %w[FOO BAR]
search = {/baz/i, /qux/i}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_false
end
end
context "against equal and matching type and regex" do
it "is true" do
array = [:a, 42, "FOO"]
search = {Symbol, Int32, String}
partial = Spectator::Expectations::ValueExpectationPartial.new(array)
matcher = Spectator::Matchers::HaveMatcher.new(search)
matcher.match?(partial).should be_true
end
end
end
end
end end
describe "#message" do describe "#message" do