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
|
# frozen_string_literal: true
require_relative '../lib/felflame'
# class EntitiesTest < Minitest::Test
describe 'Order' do
before :all do
@result = []
@system0 = FelFlame::Systems.new('System1', priority: 0) do
@result.push 0
end
@system2 = FelFlame::Systems.new('System3', priority: 2) do
@result.push 2
end
@system1 = FelFlame::Systems.new('System2', priority: 1) do
@result.push 1
end
@scene1 = FelFlame::Scenes.new('Scene0', priority: 1)
@scene0 = FelFlame::Scenes.new('Scene0', priority: 0)
end
before :each do
end
after :each do
@result.clear
@scene0.clear
@scene1.clear
@system0.priority = 0
@system1.priority = 1
@system2.priority = 2
@scene0.priority = 0
@scene1.priority = 1
end
it 'can sort Scenes' do
@scene0.add @system0
@scene1.add @system1
FelFlame::Order.sort(
@scene1,
@scene0
)
expect(@scene1.priority < @scene0.priority).to eq(true)
end
it 'can sort Systems' do
@scene0.add @system0, @system1, @system2
FelFlame::Order.sort(
@system2,
@system0,
@system1
)
@scene0.call
expect(@result).to eq([2, 0, 1])
end
it 'can handle array' do
FelFlame::Order.sort(
@system0,
[
@system1,
@system2
]
)
expect(@system0.priority < @system1.priority).to eq(true)
expect(@system0.priority < @system2.priority).to eq(true)
expect(@system1.priority == @system2.priority).to eq(true)
end
end
|