summaryrefslogtreecommitdiffhomepage
path: root/test/renderable_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/renderable_spec.rb')
-rw-r--r--test/renderable_spec.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/test/renderable_spec.rb b/test/renderable_spec.rb
index 56ee521..1352d5b 100644
--- a/test/renderable_spec.rb
+++ b/test/renderable_spec.rb
@@ -63,4 +63,53 @@ RSpec.describe Ruby2D::Renderable do
expect(quad.a).to eq(0.6)
end
+ describe "#contains?" do
+ square = Square.new(x: 1, y: 1, size: 2)
+
+ # Grid looks like this, 2x2 square at point (1, 1):
+ #
+ # 0 1 2 3 4
+ # 0 +--+--+--+--+
+ # | | | | |
+ # 1 +--+--+--+--+
+ # | |XX|XX| |
+ # 2 +--+--+--+--+
+ # | |XX|XX| |
+ # 3 +--+--+--+--+
+ # | | | | |
+ # 4 +--+--+--+--+
+
+ it "returns true if point is inside the rectangle" do
+ expect(square.contains?(1, 1)).to be true
+ expect(square.contains?(2, 1)).to be true
+ expect(square.contains?(3, 1)).to be true
+ expect(square.contains?(1, 2)).to be true
+ expect(square.contains?(2, 2)).to be true
+ expect(square.contains?(3, 2)).to be true
+ expect(square.contains?(1, 3)).to be true
+ expect(square.contains?(2, 3)).to be true
+ expect(square.contains?(3, 3)).to be true
+ end
+
+ it "returns false if point is outside the rectangle" do
+ # Clockwise around the square
+ expect(square.contains?(0, 0)).to be false
+ expect(square.contains?(1, 0)).to be false
+ expect(square.contains?(2, 0)).to be false
+ expect(square.contains?(3, 0)).to be false
+ expect(square.contains?(4, 0)).to be false
+ expect(square.contains?(4, 1)).to be false
+ expect(square.contains?(4, 2)).to be false
+ expect(square.contains?(4, 3)).to be false
+ expect(square.contains?(4, 4)).to be false
+ expect(square.contains?(3, 4)).to be false
+ expect(square.contains?(2, 4)).to be false
+ expect(square.contains?(1, 4)).to be false
+ expect(square.contains?(0, 4)).to be false
+ expect(square.contains?(0, 3)).to be false
+ expect(square.contains?(0, 2)).to be false
+ expect(square.contains?(0, 1)).to be false
+ end
+ end
+
end