summaryrefslogtreecommitdiffhomepage
path: root/test/renderable_spec.rb
blob: 1352d5b6d3911769ce7cc42d6a0a511687b60f2a (plain)
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