1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
require 'ruby2d'
RSpec.describe Ruby2D::Renderable do
it "allows colors to be set on objects" do
quad = Quad.new
quad.color = 'red'
expect(quad.color.r).to eq(1)
quad.color = [0.9, 0.8, 0.7, 0.6]
expect(quad.color.r).to eq(0.9)
expect(quad.color.g).to eq(0.8)
expect(quad.color.b).to eq(0.7)
expect(quad.color.a).to eq(0.6)
quad.color.r = 0.1
quad.color.g = 0.2
quad.color.b = 0.3
quad.color.a = 0.4
expect(quad.color.r).to eq(0.1)
expect(quad.color.g).to eq(0.2)
expect(quad.color.b).to eq(0.3)
expect(quad.color.a).to eq(0.4)
quad.r = 0.5
quad.g = 0.6
quad.b = 0.7
quad.a = 0.8
expect(quad.r).to eq(0.5)
expect(quad.g).to eq(0.6)
expect(quad.b).to eq(0.7)
expect(quad.a).to eq(0.8)
end
it "allows British English spelling of color (colour)" do
quad = Quad.new
quad.colour = 'blue'
expect(quad.color.r).to eq(0)
quad.colour = [0.1, 0.2, 0.3, 0.4]
expect(quad.color.r).to eq(0.1)
expect(quad.color.g).to eq(0.2)
expect(quad.color.b).to eq(0.3)
expect(quad.color.a).to eq(0.4)
quad.colour.r = 0.9
quad.colour.g = 0.8
quad.colour.b = 0.7
quad.colour.a = 0.6
expect(quad.colour.r).to eq(0.9)
expect(quad.colour.g).to eq(0.8)
expect(quad.colour.b).to eq(0.7)
expect(quad.colour.a).to eq(0.6)
expect(quad.color.r).to eq(0.9)
expect(quad.color.g).to eq(0.8)
expect(quad.color.b).to eq(0.7)
expect(quad.color.a).to eq(0.6)
expect(quad.r).to eq(0.9)
expect(quad.g).to eq(0.8)
expect(quad.b).to eq(0.7)
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
|