// Copyright (c) 2006-2008 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 "printing/page_number.h" #include "printing/print_settings.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" TEST(PageNumberTest, Count) { printing::PageRanges ranges; printing::PageNumber page; EXPECT_EQ(printing::PageNumber::npos(), page); page.Init(ranges, 3); EXPECT_EQ(0u, page.ToUint()); EXPECT_NE(printing::PageNumber::npos(), page); ++page; EXPECT_EQ(1u, page.ToUint()); EXPECT_NE(printing::PageNumber::npos(), page); printing::PageNumber page_copy(page); EXPECT_EQ(1u, page_copy.ToUint()); EXPECT_EQ(1u, page.ToUint()); ++page; EXPECT_EQ(1u, page_copy.ToUint()); EXPECT_EQ(2u, page.ToUint()); ++page; EXPECT_EQ(printing::PageNumber::npos(), page); ++page; EXPECT_EQ(printing::PageNumber::npos(), page); } TEST(PageNumberTest, GetPages) { printing::PageRanges ranges = {{5, 6}, {0, 2}, {9, 9}, {11, 10000}}; EXPECT_THAT(printing::PageNumber::GetPages(ranges, 13), testing::ElementsAre(0, 1, 2, 5, 6, 9, 11, 12)); EXPECT_THAT(printing::PageNumber::GetPages({}, 5), testing::ElementsAre(0, 1, 2, 3, 4)); } TEST(PageNumberTest, GetPagesOutOfRange) { printing::PageRanges ranges = {{7, 8}}; EXPECT_THAT(printing::PageNumber::GetPages(ranges, 7), testing::IsEmpty()); }