mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Test and improve "Anything"
This commit is contained in:
parent
4e3cb5d25f
commit
a20f2d4f98
2 changed files with 70 additions and 0 deletions
49
spec/spectator/anything_spec.cr
Normal file
49
spec/spectator/anything_spec.cr
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
require "../spec_helper"
|
||||||
|
|
||||||
|
Spectator.describe Spectator::Anything do
|
||||||
|
it "equals everything" do
|
||||||
|
expect(true).to eq(subject)
|
||||||
|
expect(false).to eq(subject)
|
||||||
|
expect(nil).to eq(subject)
|
||||||
|
expect(42).to eq(subject)
|
||||||
|
expect(42.as(Int32 | String)).to eq(subject)
|
||||||
|
expect(["foo", "bar"]).to eq(subject)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "matches everything" do
|
||||||
|
expect(true).to match(subject)
|
||||||
|
expect(false).to match(subject)
|
||||||
|
expect(nil).to match(subject)
|
||||||
|
expect(42).to match(subject)
|
||||||
|
expect(42.as(Int32 | String)).to match(subject)
|
||||||
|
expect(["foo", "bar"]).to match(subject)
|
||||||
|
end
|
||||||
|
|
||||||
|
context "nested in a container" do
|
||||||
|
it "equals everything" do
|
||||||
|
expect(["foo", "bar"]).to eq(["foo", subject])
|
||||||
|
expect({"foo", "bar"}).to eq({"foo", subject})
|
||||||
|
expect({foo: "bar"}).to eq({foo: subject})
|
||||||
|
expect({"foo" => "bar"}).to eq({"foo" => subject})
|
||||||
|
end
|
||||||
|
|
||||||
|
it "matches everything" do
|
||||||
|
expect(["foo", "bar"]).to match(["foo", subject])
|
||||||
|
expect({"foo", "bar"}).to match({"foo", subject})
|
||||||
|
expect({foo: "bar"}).to match({foo: subject})
|
||||||
|
expect({"foo" => "bar"}).to match({"foo" => subject})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#to_s" do
|
||||||
|
subject { super.to_s }
|
||||||
|
|
||||||
|
it { is_expected.to contain("anything") }
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#inspect" do
|
||||||
|
subject { super.inspect }
|
||||||
|
|
||||||
|
it { is_expected.to contain("anything") }
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,15 +1,36 @@
|
||||||
module Spectator
|
module Spectator
|
||||||
|
# Type dedicated to matching everything.
|
||||||
|
# This is intended to be used as a value to compare against when the value doesn't matter.
|
||||||
|
# Can be used like so:
|
||||||
|
# ```
|
||||||
|
# anything = Spectator::Anything.new
|
||||||
|
# array = ["foo", anything]
|
||||||
|
# expect(["foo", "bar"]).to eq(array)
|
||||||
|
# ```
|
||||||
struct Anything
|
struct Anything
|
||||||
|
# Always returns true.
|
||||||
def ==(other)
|
def ==(other)
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Always returns true.
|
||||||
def ===(other)
|
def ===(other)
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Always returns true.
|
||||||
def =~(other)
|
def =~(other)
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Displays "anything".
|
||||||
|
def to_s(io)
|
||||||
|
io << "anything"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Displays "<anything>".
|
||||||
|
def inspect(io)
|
||||||
|
io << "<anything>"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue