1// Copyright (c) 2013 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 "ui/gfx/sequential_id_generator.h" 6 7#include "base/logging.h" 8#include "testing/gtest/include/gtest/gtest.h" 9 10namespace ui { 11 12typedef testing::Test SequentialIDGeneratorTest; 13 14TEST(SequentialIDGeneratorTest, AddRemove) { 15 const uint32 kMinID = 2; 16 SequentialIDGenerator generator(kMinID); 17 18 EXPECT_EQ(2U, generator.GetGeneratedID(45)); 19 EXPECT_EQ(3U, generator.GetGeneratedID(23)); 20 EXPECT_EQ(2U, generator.GetGeneratedID(45)); 21 EXPECT_TRUE(generator.HasGeneratedIDFor(45)); 22 EXPECT_TRUE(generator.HasGeneratedIDFor(23)); 23 24 generator.ReleaseGeneratedID(2); 25 EXPECT_FALSE(generator.HasGeneratedIDFor(45)); 26 EXPECT_TRUE(generator.HasGeneratedIDFor(23)); 27 EXPECT_EQ(3U, generator.GetGeneratedID(23)); 28 29 EXPECT_FALSE(generator.HasGeneratedIDFor(1)); 30 EXPECT_EQ(2U, generator.GetGeneratedID(1)); 31 EXPECT_TRUE(generator.HasGeneratedIDFor(1)); 32 33 generator.ReleaseGeneratedID(3); 34 EXPECT_EQ(3U, generator.GetGeneratedID(45)); 35 EXPECT_TRUE(generator.HasGeneratedIDFor(45)); 36 37 generator.ReleaseNumber(45); 38 EXPECT_FALSE(generator.HasGeneratedIDFor(45)); 39} 40 41TEST(SequentialIDGeneratorTest, RemoveMultipleNumbers) { 42 const uint32 kMinID = 4; 43 SequentialIDGenerator generator(kMinID); 44 45 EXPECT_EQ(4U, generator.GetGeneratedID(45)); 46 EXPECT_EQ(5U, generator.GetGeneratedID(55)); 47 EXPECT_EQ(6U, generator.GetGeneratedID(15)); 48 49 generator.ReleaseNumber(45); 50 EXPECT_FALSE(generator.HasGeneratedIDFor(45)); 51 generator.ReleaseNumber(15); 52 EXPECT_FALSE(generator.HasGeneratedIDFor(15)); 53 54 EXPECT_EQ(5U, generator.GetGeneratedID(55)); 55 EXPECT_EQ(4U, generator.GetGeneratedID(12)); 56 57 generator.ReleaseNumber(12); 58 generator.ReleaseNumber(55); 59 EXPECT_EQ(4U, generator.GetGeneratedID(0)); 60} 61 62} // namespace ui 63