summaryrefslogtreecommitdiffhomepage
path: root/spec/order_spec.rb
blob: 2dfe7a669363f63dead869d35318b8f7e388156a (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
# 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