2013-03-13 02:07:01 -05:00
|
|
|
require 'testing_env'
|
|
|
|
require 'compilers'
|
|
|
|
|
|
|
|
class CompilerQueueTests < Test::Unit::TestCase
|
|
|
|
FakeCompiler = Struct.new(:name, :priority)
|
|
|
|
|
|
|
|
def setup
|
|
|
|
@q = CompilerQueue.new
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_shovel_returns_self
|
|
|
|
assert_same @q, (@q << Object.new)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_empty
|
2014-06-11 12:22:29 -05:00
|
|
|
assert_empty @q
|
2013-03-13 02:07:01 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_queues_items
|
|
|
|
a = FakeCompiler.new(:foo, 0)
|
|
|
|
b = FakeCompiler.new(:bar, 0)
|
|
|
|
@q << a << b
|
|
|
|
assert_equal a, @q.pop
|
|
|
|
assert_equal b, @q.pop
|
|
|
|
assert_nil @q.pop
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_pops_items_by_priority
|
|
|
|
a = FakeCompiler.new(:foo, 0)
|
|
|
|
b = FakeCompiler.new(:bar, 0.5)
|
|
|
|
c = FakeCompiler.new(:baz, 1)
|
|
|
|
@q << a << b << c
|
|
|
|
assert_equal c, @q.pop
|
|
|
|
assert_equal b, @q.pop
|
|
|
|
assert_equal a, @q.pop
|
|
|
|
assert_nil @q.pop
|
|
|
|
end
|
|
|
|
end
|