1// Copyright (c) 2011 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 "printing/page_range.h"
6#include "testing/gtest/include/gtest/gtest.h"
7
8TEST(PageRangeTest, RangeMerge) {
9  printing::PageRanges ranges;
10  printing::PageRange range;
11  range.from = 1;
12  range.to = 3;
13  ranges.push_back(range);
14  range.from = 10;
15  range.to = 12;
16  ranges.push_back(range);
17  range.from = 2;
18  range.to = 5;
19  ranges.push_back(range);
20  std::vector<int> pages(printing::PageRange::GetPages(ranges));
21  ASSERT_EQ(8U, pages.size());
22  EXPECT_EQ(1, pages[0]);
23  EXPECT_EQ(2, pages[1]);
24  EXPECT_EQ(3, pages[2]);
25  EXPECT_EQ(4, pages[3]);
26  EXPECT_EQ(5, pages[4]);
27  EXPECT_EQ(10, pages[5]);
28  EXPECT_EQ(11, pages[6]);
29  EXPECT_EQ(12, pages[7]);
30}
31
32TEST(PageRangeTest, Empty) {
33  printing::PageRanges ranges;
34  std::vector<int> pages(printing::PageRange::GetPages(ranges));
35  EXPECT_TRUE(pages.empty());
36}
37
38TEST(PageRangeTest, Huge) {
39  printing::PageRanges ranges;
40  printing::PageRange range;
41  range.from = 1;
42  range.to = 2000000000;
43  ranges.push_back(range);
44  std::vector<int> pages(printing::PageRange::GetPages(ranges));
45  EXPECT_FALSE(pages.empty());
46}
47