// 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 "cc/resources/tile_priority.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace cc {

TEST(TilePriorityTest, IsHigherPriorityThan) {
  TilePriority now(HIGH_RESOLUTION, TilePriority::NOW, 0);
  TilePriority close_soon(HIGH_RESOLUTION, TilePriority::SOON, 1);
  TilePriority far_soon(HIGH_RESOLUTION, TilePriority::SOON, 500);
  TilePriority close_eventually(HIGH_RESOLUTION, TilePriority::EVENTUALLY, 2);
  TilePriority far_eventually(HIGH_RESOLUTION, TilePriority::EVENTUALLY, 1000);
  TilePriority non_ideal_now(NON_IDEAL_RESOLUTION, TilePriority::NOW, 0);

  EXPECT_FALSE(now.IsHigherPriorityThan(now));
  EXPECT_FALSE(now.IsHigherPriorityThan(non_ideal_now));

  EXPECT_TRUE(now.IsHigherPriorityThan(close_soon));
  EXPECT_TRUE(now.IsHigherPriorityThan(far_soon));
  EXPECT_TRUE(now.IsHigherPriorityThan(close_eventually));
  EXPECT_TRUE(now.IsHigherPriorityThan(far_eventually));
  EXPECT_TRUE(close_soon.IsHigherPriorityThan(far_soon));
  EXPECT_TRUE(close_soon.IsHigherPriorityThan(close_eventually));
  EXPECT_TRUE(close_soon.IsHigherPriorityThan(far_eventually));
  EXPECT_TRUE(far_soon.IsHigherPriorityThan(close_eventually));
  EXPECT_TRUE(far_soon.IsHigherPriorityThan(far_eventually));
  EXPECT_TRUE(close_eventually.IsHigherPriorityThan(far_eventually));

  EXPECT_FALSE(far_eventually.IsHigherPriorityThan(close_eventually));
  EXPECT_FALSE(far_eventually.IsHigherPriorityThan(far_soon));
  EXPECT_FALSE(far_eventually.IsHigherPriorityThan(close_soon));
  EXPECT_FALSE(far_eventually.IsHigherPriorityThan(now));
  EXPECT_FALSE(far_eventually.IsHigherPriorityThan(non_ideal_now));
  EXPECT_FALSE(close_eventually.IsHigherPriorityThan(far_soon));
  EXPECT_FALSE(close_eventually.IsHigherPriorityThan(close_soon));
  EXPECT_FALSE(close_eventually.IsHigherPriorityThan(now));
  EXPECT_FALSE(far_soon.IsHigherPriorityThan(close_soon));
  EXPECT_FALSE(far_soon.IsHigherPriorityThan(now));
  EXPECT_FALSE(close_soon.IsHigherPriorityThan(now));
}

}  // namespace cc
