1// Copyright 2010 the V8 project authors. All rights reserved.
2//
3// Tests of the unbound queue.
4
5#include "v8.h"
6#include "unbound-queue-inl.h"
7#include "cctest.h"
8
9using i::UnboundQueue;
10
11
12TEST(SingleRecord) {
13  typedef int Record;
14  UnboundQueue<Record> cq;
15  CHECK(cq.IsEmpty());
16  cq.Enqueue(1);
17  CHECK(!cq.IsEmpty());
18  Record rec = 0;
19  cq.Dequeue(&rec);
20  CHECK_EQ(1, rec);
21  CHECK(cq.IsEmpty());
22}
23
24
25TEST(MultipleRecords) {
26  typedef int Record;
27  UnboundQueue<Record> cq;
28  CHECK(cq.IsEmpty());
29  cq.Enqueue(1);
30  CHECK(!cq.IsEmpty());
31  for (int i = 2; i <= 5; ++i) {
32    cq.Enqueue(i);
33    CHECK(!cq.IsEmpty());
34  }
35  Record rec = 0;
36  for (int i = 1; i <= 4; ++i) {
37    CHECK(!cq.IsEmpty());
38    cq.Dequeue(&rec);
39    CHECK_EQ(i, rec);
40  }
41  for (int i = 6; i <= 12; ++i) {
42    cq.Enqueue(i);
43    CHECK(!cq.IsEmpty());
44  }
45  for (int i = 5; i <= 12; ++i) {
46    CHECK(!cq.IsEmpty());
47    cq.Dequeue(&rec);
48    CHECK_EQ(i, rec);
49  }
50  CHECK(cq.IsEmpty());
51}
52
53