File: C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/chunky_png-1.4.0/spec/chunky_png/point_spec.rb
require "spec_helper"
describe ChunkyPNG::Point do
subject { ChunkyPNG::Point.new(1, 2) }
it { should respond_to(:x) }
it { should respond_to(:y) }
describe "#within_bounds?" do
it { should be_within_bounds(2, 3) }
it { should_not be_within_bounds("1x3") }
it { should_not be_within_bounds(2, 2) }
it { should_not be_within_bounds("[1 2]") }
end
describe "#<=>" do
it "should return 0 if the coordinates are identical" do
expect((subject <=> ChunkyPNG::Point.new(1, 2))).to eql(0)
end
it "should return -1 if the y coordinate is smaller than the other one" do
expect((subject <=> ChunkyPNG::Point.new(1, 3))).to eql(-1)
expect((subject <=> ChunkyPNG::Point.new(0, 3))).to eql(-1) # x doesn't matter
expect((subject <=> ChunkyPNG::Point.new(2, 3))).to eql(-1) # x doesn't matter
end
it "should return 1 if the y coordinate is larger than the other one" do
expect((subject <=> ChunkyPNG::Point.new(1, 0))).to eql(1)
expect((subject <=> ChunkyPNG::Point.new(0, 0))).to eql(1) # x doesn't matter
expect((subject <=> ChunkyPNG::Point.new(2, 0))).to eql(1) # x doesn't matter
end
it "should return -1 if the x coordinate is smaller and y is the same" do
expect((subject <=> ChunkyPNG::Point.new(2, 2))).to eql(-1)
end
it "should return 1 if the x coordinate is larger and y is the same" do
expect((subject <=> ChunkyPNG::Point.new(0, 2))).to eql(1)
end
end
end
describe "ChunkyPNG.Point" do
subject { ChunkyPNG::Point.new(1, 2) }
it "should create a point from a 2-item array" do
expect(ChunkyPNG::Point([1, 2])).to eql subject
expect(ChunkyPNG::Point(["1", "2"])).to eql subject
end
it "should create a point from a hash with x and y keys" do
expect(ChunkyPNG::Point(x: 1, y: 2)).to eql subject
expect(ChunkyPNG::Point("x" => "1", "y" => "2")).to eql subject
end
it "should create a point from a ChunkyPNG::Dimension object" do
dimension = ChunkyPNG::Dimension.new(1, 2)
ChunkyPNG::Point(dimension) == subject
end
it "should create a point from a point-like string" do
[
ChunkyPNG::Point("1,2"),
ChunkyPNG::Point("1 2"),
ChunkyPNG::Point("(1 , 2)"),
ChunkyPNG::Point("{1,\t2}"),
ChunkyPNG::Point("[1 2}"),
].all? { |point| point == subject }
end
it "should create a point from an object that responds to x and y" do
mock_object = Struct.new(:x, :y).new(1, 2)
expect(ChunkyPNG::Point(mock_object)).to eql subject
end
it "should raise an exception if the input is not understood" do
expect { ChunkyPNG::Point(Object.new) }.to raise_error(ArgumentError)
expect { ChunkyPNG::Point(1, 2, 3) }.to raise_error(ArgumentError)
end
end