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
|
||||
# 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
|
||||
# Always returns true.
|
||||
def ==(other)
|
||||
true
|
||||
end
|
||||
|
||||
# Always returns true.
|
||||
def ===(other)
|
||||
true
|
||||
end
|
||||
|
||||
# Always returns true.
|
||||
def =~(other)
|
||||
true
|
||||
end
|
||||
|
||||
# Displays "anything".
|
||||
def to_s(io)
|
||||
io << "anything"
|
||||
end
|
||||
|
||||
# Displays "<anything>".
|
||||
def inspect(io)
|
||||
io << "<anything>"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue