// Copyright 2010 the V8 project authors. All rights reserved. // // Tests of the unbound queue. #include "v8.h" #include "unbound-queue-inl.h" #include "cctest.h" using i::UnboundQueue; TEST(SingleRecord) { typedef int Record; UnboundQueue<Record> cq; CHECK(cq.IsEmpty()); cq.Enqueue(1); CHECK(!cq.IsEmpty()); Record rec = 0; cq.Dequeue(&rec); CHECK_EQ(1, rec); CHECK(cq.IsEmpty()); } TEST(MultipleRecords) { typedef int Record; UnboundQueue<Record> cq; CHECK(cq.IsEmpty()); cq.Enqueue(1); CHECK(!cq.IsEmpty()); for (int i = 2; i <= 5; ++i) { cq.Enqueue(i); CHECK(!cq.IsEmpty()); } Record rec = 0; for (int i = 1; i <= 4; ++i) { CHECK(!cq.IsEmpty()); cq.Dequeue(&rec); CHECK_EQ(i, rec); } for (int i = 6; i <= 12; ++i) { cq.Enqueue(i); CHECK(!cq.IsEmpty()); } for (int i = 5; i <= 12; ++i) { CHECK(!cq.IsEmpty()); cq.Dequeue(&rec); CHECK_EQ(i, rec); } CHECK(cq.IsEmpty()); }