| // Copyright 2006-2008 The Chromium Authors |
| // 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, 8), |
| testing::ElementsAre(0, 1, 2, 5, 6)); |
| 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()); |
| } |