brew/Library/Homebrew/test/lazy_object_spec.rb

38 lines
812 B
Ruby

# frozen_string_literal: true
require "lazy_object"
RSpec.describe LazyObject do
describe "#initialize" do
it "does not evaluate the block" do
expect do |block|
described_class.new(&block)
end.not_to yield_control
end
end
describe "when receiving a message" do
it "evaluates the block" do
expect(described_class.new { 42 }.to_s).to eq "42"
end
end
describe "#!" do
it "delegates to the underlying object" do
expect(!(described_class.new { false })).to be true
end
end
describe "#!=" do
it "delegates to the underlying object" do
expect(described_class.new { 42 }).not_to eq 13
end
end
describe "#==" do
it "delegates to the underlying object" do
expect(described_class.new { 42 }).to eq 42
end
end
end