1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "config.h"
6#include "wtf/DoubleBufferedDeque.h"
7
8#include <gtest/gtest.h>
9
10namespace {
11
12typedef testing::Test DoubleBufferedDequeTest;
13
14TEST(DoubleBufferedDequeTest, TestIsEmpty)
15{
16    DoubleBufferedDeque<int> queue;
17
18    EXPECT_TRUE(queue.isEmpty());
19    queue.append(1);
20    EXPECT_FALSE(queue.isEmpty());
21}
22
23TEST(DoubleBufferedDequeTest, TestIsEmptyAfterSwapBuffers)
24{
25    DoubleBufferedDeque<int> queue;
26    queue.append(1);
27
28    queue.swapBuffers();
29    EXPECT_TRUE(queue.isEmpty());
30}
31
32TEST(DoubleBufferedDequeTest, TestDoubleBuffering)
33{
34    DoubleBufferedDeque<int> queue;
35    queue.append(1);
36    queue.append(10);
37    queue.append(100);
38
39    {
40        Deque<int>& deque = queue.swapBuffers();
41        EXPECT_EQ(1, deque.takeFirst());
42        EXPECT_EQ(10, deque.takeFirst());
43        EXPECT_EQ(100, deque.takeFirst());
44    }
45    queue.append(2);
46
47    EXPECT_EQ(2, queue.swapBuffers().takeFirst());
48    queue.append(3);
49
50    EXPECT_EQ(3, queue.swapBuffers().takeFirst());
51}
52
53} // namespace
54