Queue tests
This commit is contained in:
47
spec/queue_spec.cr
Normal file
47
spec/queue_spec.cr
Normal file
@ -0,0 +1,47 @@
|
||||
require "spec"
|
||||
require "./../src/queue"
|
||||
require "./../src/command"
|
||||
|
||||
macro define_dummy_classes(count)
|
||||
{% for i in (1...count) %}
|
||||
class Test::DummyCommand{{ i }} < Command
|
||||
def start(world) : Int32
|
||||
end
|
||||
|
||||
def finish(world)
|
||||
end
|
||||
end
|
||||
{% end %}
|
||||
end
|
||||
|
||||
define_dummy_classes(5)
|
||||
|
||||
describe App::Queue do
|
||||
it "should pop nil on empty queue" do
|
||||
queue = App::Queue.new
|
||||
item = queue.pop(50)
|
||||
item.should be_nil
|
||||
end
|
||||
|
||||
it "should pop command on one element queue" do
|
||||
queue = App::Queue.new
|
||||
queue.push(10, Test::DummyCommand1.new)
|
||||
item = queue.pop(50)
|
||||
item.nil?.should be_false
|
||||
item.as(App::Queue::Item).ts.should eq 10
|
||||
item.as(App::Queue::Item).command.should be_a(Test::DummyCommand1)
|
||||
end
|
||||
|
||||
it "should pop commands in proper order" do
|
||||
queue = App::Queue.new
|
||||
queue.push(10, Test::DummyCommand1.new)
|
||||
queue.push(50, Test::DummyCommand2.new)
|
||||
queue.push(30, Test::DummyCommand3.new)
|
||||
item1 = queue.pop(100)
|
||||
item1.as(App::Queue::Item).command.should be_a(Test::DummyCommand1)
|
||||
item2 = queue.pop(100)
|
||||
item2.as(App::Queue::Item).command.should be_a(Test::DummyCommand3)
|
||||
item3 = queue.pop(100)
|
||||
item3.as(App::Queue::Item).command.should be_a(Test::DummyCommand2)
|
||||
end
|
||||
end
|
@ -12,12 +12,3 @@ describe Point do
|
||||
p2.distance(p1).should eq 10
|
||||
end
|
||||
end
|
||||
|
||||
describe App::Queue do
|
||||
q = App::Queue(Int32).new
|
||||
q.push(0, 1)
|
||||
q.push(10, 2)
|
||||
q.push(5, 3)
|
||||
item = q.pop(50)
|
||||
item.nil?.should be_falsey
|
||||
end
|
||||
|
Reference in New Issue
Block a user