// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "sky/engine/wtf/DoubleBufferedDeque.h"

#include <gtest/gtest.h>

namespace {

typedef testing::Test DoubleBufferedDequeTest;

TEST(DoubleBufferedDequeTest, TestIsEmpty)
{
    DoubleBufferedDeque<int> queue;

    EXPECT_TRUE(queue.isEmpty());
    queue.append(1);
    EXPECT_FALSE(queue.isEmpty());
}

TEST(DoubleBufferedDequeTest, TestIsEmptyAfterSwapBuffers)
{
    DoubleBufferedDeque<int> queue;
    queue.append(1);

    queue.swapBuffers();
    EXPECT_TRUE(queue.isEmpty());
}

TEST(DoubleBufferedDequeTest, TestDoubleBuffering)
{
    DoubleBufferedDeque<int> queue;
    queue.append(1);
    queue.append(10);
    queue.append(100);

    {
        Deque<int>& deque = queue.swapBuffers();
        EXPECT_EQ(1, deque.takeFirst());
        EXPECT_EQ(10, deque.takeFirst());
        EXPECT_EQ(100, deque.takeFirst());
    }
    queue.append(2);

    EXPECT_EQ(2, queue.swapBuffers().takeFirst());
    queue.append(3);

    EXPECT_EQ(3, queue.swapBuffers().takeFirst());
}

} // namespace
