1 // Copyright 2006-2008 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "printing/page_number.h"
6 #include "printing/print_settings.h"
7 #include "testing/gmock/include/gmock/gmock.h"
8 #include "testing/gtest/include/gtest/gtest.h"
10 TEST(PageNumberTest, Count) {
11 printing::PageRanges ranges;
12 printing::PageNumber page;
13 EXPECT_EQ(printing::PageNumber::npos(), page);
15 EXPECT_EQ(0u, page.ToUint());
16 EXPECT_NE(printing::PageNumber::npos(), page);
18 EXPECT_EQ(1u, page.ToUint());
19 EXPECT_NE(printing::PageNumber::npos(), page);
21 printing::PageNumber page_copy(page);
22 EXPECT_EQ(1u, page_copy.ToUint());
23 EXPECT_EQ(1u, page.ToUint());
25 EXPECT_EQ(1u, page_copy.ToUint());
26 EXPECT_EQ(2u, page.ToUint());
28 EXPECT_EQ(printing::PageNumber::npos(), page);
30 EXPECT_EQ(printing::PageNumber::npos(), page);
33 TEST(PageNumberTest, GetPages) {
34 printing::PageRanges ranges = {{5, 6}, {0, 2}, {9, 9}, {11, 10000}};
35 EXPECT_THAT(printing::PageNumber::GetPages(ranges, 8),
36 testing::ElementsAre(0, 1, 2, 5, 6));
37 EXPECT_THAT(printing::PageNumber::GetPages(ranges, 13),
38 testing::ElementsAre(0, 1, 2, 5, 6, 9, 11, 12));
39 EXPECT_THAT(printing::PageNumber::GetPages({}, 5),
40 testing::ElementsAre(0, 1, 2, 3, 4));
43 TEST(PageNumberTest, GetPagesOutOfRange) {
44 printing::PageRanges ranges = {{7, 8}};
45 EXPECT_THAT(printing::PageNumber::GetPages(ranges, 7), testing::IsEmpty());