• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
9 namespace i = v8::internal;
10 
11 using i::UnboundQueue;
12 
13 
TEST(SingleRecord)14 TEST(SingleRecord) {
15   typedef int Record;
16   UnboundQueue<Record> cq;
17   CHECK(cq.IsEmpty());
18   cq.Enqueue(1);
19   CHECK(!cq.IsEmpty());
20   Record rec = 0;
21   cq.Dequeue(&rec);
22   CHECK_EQ(1, rec);
23   CHECK(cq.IsEmpty());
24 }
25 
26 
TEST(MultipleRecords)27 TEST(MultipleRecords) {
28   typedef int Record;
29   UnboundQueue<Record> cq;
30   CHECK(cq.IsEmpty());
31   cq.Enqueue(1);
32   CHECK(!cq.IsEmpty());
33   for (int i = 2; i <= 5; ++i) {
34     cq.Enqueue(i);
35     CHECK(!cq.IsEmpty());
36   }
37   Record rec = 0;
38   for (int i = 1; i <= 4; ++i) {
39     CHECK(!cq.IsEmpty());
40     cq.Dequeue(&rec);
41     CHECK_EQ(i, rec);
42   }
43   for (int i = 6; i <= 12; ++i) {
44     cq.Enqueue(i);
45     CHECK(!cq.IsEmpty());
46   }
47   for (int i = 5; i <= 12; ++i) {
48     CHECK(!cq.IsEmpty());
49     cq.Dequeue(&rec);
50     CHECK_EQ(i, rec);
51   }
52   CHECK(cq.IsEmpty());
53 }
54 
55