Index: pdf/range_set_unittest.cc |
diff --git a/pdf/range_set_unittest.cc b/pdf/range_set_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..48a33e8aec6d9344a330395a700fb5ab8980e81b |
--- /dev/null |
+++ b/pdf/range_set_unittest.cc |
@@ -0,0 +1,303 @@ |
+// Copyright (c) 2016 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 "pdf/range_set.h" |
+ |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace chrome_pdf { |
+ |
+TEST(RangeSetTest, Union) { |
+ { |
+ RangeSet range_set; |
+ EXPECT_EQ(range_set.ToString(), "{}"); |
Lei Zhang
2016/10/05 07:18:08
In general, the parameters here are EXPECT_EQ(expe
snake
2016/10/05 14:14:10
Done.
|
+ range_set.Union(gfx::Range(50, 100)); |
+ EXPECT_EQ(range_set.ToString(), "{[50,100)}"); |
+ range_set.Union(gfx::Range(80, 150)); |
+ EXPECT_EQ(range_set.ToString(), "{[50,150)}"); |
+ range_set.Union(gfx::Range(0, 70)); |
+ EXPECT_EQ(range_set.ToString(), "{[0,150)}"); |
+ range_set.Union(gfx::Range(70, 120)); |
+ EXPECT_EQ(range_set.ToString(), "{[0,150)}"); |
+ range_set.Union(gfx::Range(200, 150)); |
+ EXPECT_EQ(range_set.ToString(), "{[0,150)[151,201)}"); |
+ range_set.Union(gfx::Range(150, 151)); |
+ EXPECT_EQ(range_set.ToString(), "{[0,201)}"); |
+ range_set.Union(gfx::Range(0, 300)); |
+ EXPECT_EQ(range_set.ToString(), "{[0,300)}"); |
+ range_set.Union(gfx::Range(500, 600)); |
+ EXPECT_EQ(range_set.ToString(), "{[0,300)[500,600)}"); |
+ } |
+ { |
+ RangeSet range_set_1; |
+ range_set_1.Union(gfx::Range(0, 10)); |
+ range_set_1.Union(gfx::Range(20, 30)); |
+ range_set_1.Union(gfx::Range(40, 50)); |
+ |
+ EXPECT_EQ(range_set_1.ToString(), "{[0,10)[20,30)[40,50)}"); |
+ range_set_1.Union(range_set_1); |
+ EXPECT_EQ(range_set_1.ToString(), "{[0,10)[20,30)[40,50)}"); |
+ |
+ RangeSet range_set_2; |
+ range_set_2.Union(gfx::Range(10, 20)); |
+ range_set_2.Union(gfx::Range(30, 40)); |
+ range_set_2.Union(gfx::Range(50, 60)); |
+ |
+ EXPECT_EQ(range_set_2.ToString(), "{[10,20)[30,40)[50,60)}"); |
+ range_set_1.Union(range_set_2); |
+ EXPECT_EQ(range_set_1.ToString(), "{[0,60)}"); |
+ EXPECT_TRUE(range_set_1 == RangeSet(gfx::Range(0, 60))); |
Lei Zhang
2016/10/05 07:18:08
In general, can EXPECT_TRUE(expected == actual) be
snake
2016/10/05 14:14:10
Done.
|
+ } |
+} |
+ |
+TEST(RangeSetTest, Contains) { |
+ RangeSet range_set; |
+ range_set.Union(gfx::Range(10, 20)); |
+ range_set.Union(gfx::Range(30, 40)); |
+ range_set.Union(gfx::Range(50, 60)); |
+ EXPECT_TRUE(range_set.Contains(range_set)); |
+ |
+ { |
+ EXPECT_FALSE(range_set.Contains(9)); |
+ EXPECT_FALSE(range_set.Contains(29)); |
+ EXPECT_FALSE(range_set.Contains(49)); |
+ |
+ EXPECT_TRUE(range_set.Contains(10)); |
+ EXPECT_TRUE(range_set.Contains(30)); |
+ EXPECT_TRUE(range_set.Contains(50)); |
+ |
+ EXPECT_TRUE(range_set.Contains(15)); |
+ EXPECT_TRUE(range_set.Contains(35)); |
+ EXPECT_TRUE(range_set.Contains(55)); |
+ |
+ EXPECT_TRUE(range_set.Contains(19)); |
+ EXPECT_TRUE(range_set.Contains(39)); |
+ EXPECT_TRUE(range_set.Contains(59)); |
+ |
+ EXPECT_FALSE(range_set.Contains(20)); |
+ EXPECT_FALSE(range_set.Contains(40)); |
+ EXPECT_FALSE(range_set.Contains(60)); |
+ } |
+ { |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(0, 10))); |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(20, 30))); |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(40, 50))); |
+ |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(5, 15))); |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(25, 35))); |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(45, 55))); |
+ |
+ EXPECT_TRUE(range_set.Contains(gfx::Range(10, 15))); |
+ EXPECT_TRUE(range_set.Contains(gfx::Range(30, 35))); |
+ EXPECT_TRUE(range_set.Contains(gfx::Range(50, 55))); |
+ |
+ EXPECT_TRUE(range_set.Contains(gfx::Range(15, 20))); |
+ EXPECT_TRUE(range_set.Contains(gfx::Range(35, 40))); |
+ EXPECT_TRUE(range_set.Contains(gfx::Range(55, 60))); |
+ |
+ EXPECT_TRUE(range_set.Contains(gfx::Range(10, 20))); |
+ EXPECT_TRUE(range_set.Contains(gfx::Range(30, 40))); |
+ EXPECT_TRUE(range_set.Contains(gfx::Range(50, 60))); |
+ |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(15, 25))); |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(35, 45))); |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(55, 65))); |
+ |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(20, 25))); |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(40, 45))); |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(60, 65))); |
+ |
+ EXPECT_FALSE(range_set.Contains(gfx::Range(0, 100))); |
+ } |
+ { |
+ RangeSet range_set_2 = range_set; |
+ EXPECT_TRUE(range_set_2.Contains(range_set)); |
+ range_set_2.Union(gfx::Range(100, 200)); |
+ EXPECT_TRUE(range_set_2.Contains(range_set)); |
+ EXPECT_FALSE(range_set.Contains(range_set_2)); |
+ } |
+} |
+ |
+TEST(RangeSetTest, Intersects) { |
+ RangeSet range_set; |
+ range_set.Union(gfx::Range(10, 20)); |
+ range_set.Union(gfx::Range(30, 40)); |
+ range_set.Union(gfx::Range(50, 60)); |
+ EXPECT_TRUE(range_set.Intersects(range_set)); |
+ { |
+ EXPECT_FALSE(range_set.Intersects(gfx::Range(0, 10))); |
+ EXPECT_FALSE(range_set.Intersects(gfx::Range(20, 30))); |
+ EXPECT_FALSE(range_set.Intersects(gfx::Range(40, 50))); |
+ |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(5, 15))); |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(25, 35))); |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(45, 55))); |
+ |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(10, 15))); |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(30, 35))); |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(50, 55))); |
+ |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(15, 20))); |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(35, 40))); |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(55, 60))); |
+ |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(10, 20))); |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(30, 40))); |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(50, 60))); |
+ |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(15, 25))); |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(35, 45))); |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(55, 65))); |
+ |
+ EXPECT_FALSE(range_set.Intersects(gfx::Range(20, 25))); |
+ EXPECT_FALSE(range_set.Intersects(gfx::Range(40, 45))); |
+ EXPECT_FALSE(range_set.Intersects(gfx::Range(60, 65))); |
+ |
+ EXPECT_TRUE(range_set.Intersects(gfx::Range(0, 100))); |
+ } |
+ { |
+ RangeSet range_set_2; |
+ range_set_2.Union(gfx::Range(5, 15)); |
+ range_set_2.Union(gfx::Range(25, 35)); |
+ range_set_2.Union(gfx::Range(45, 55)); |
+ EXPECT_TRUE(range_set_2.Intersects(range_set)); |
+ } |
+ { |
+ RangeSet range_set_2; |
+ range_set_2.Union(gfx::Range(5, 10)); |
+ range_set_2.Union(gfx::Range(25, 30)); |
+ range_set_2.Union(gfx::Range(45, 50)); |
+ EXPECT_FALSE(range_set_2.Intersects(range_set)); |
+ } |
+} |
+ |
+TEST(RangeSetTest, Intersect) { |
+ { |
+ RangeSet range_set; |
+ range_set.Union(gfx::Range(10, 20)); |
+ range_set.Union(gfx::Range(30, 40)); |
+ range_set.Union(gfx::Range(50, 60)); |
+ |
+ EXPECT_EQ(range_set.ToString(), "{[10,20)[30,40)[50,60)}"); |
+ range_set.Intersect(range_set); |
+ EXPECT_EQ(range_set.ToString(), "{[10,20)[30,40)[50,60)}"); |
+ range_set.Intersect(gfx::Range(0, 100)); |
+ EXPECT_EQ(range_set.ToString(), "{[10,20)[30,40)[50,60)}"); |
+ range_set.Intersect(gfx::Range(0, 55)); |
+ EXPECT_EQ(range_set.ToString(), "{[10,20)[30,40)[50,55)}"); |
+ range_set.Intersect(gfx::Range(15, 100)); |
+ EXPECT_EQ(range_set.ToString(), "{[15,20)[30,40)[50,55)}"); |
+ range_set.Intersect(gfx::Range(17, 53)); |
+ EXPECT_EQ(range_set.ToString(), "{[17,20)[30,40)[50,53)}"); |
+ range_set.Intersect(gfx::Range(19, 45)); |
+ EXPECT_EQ(range_set.ToString(), "{[19,20)[30,40)}"); |
+ range_set.Intersect(gfx::Range(30, 45)); |
+ EXPECT_EQ(range_set.ToString(), "{[30,40)}"); |
+ range_set.Intersect(gfx::Range(35, 40)); |
+ EXPECT_EQ(range_set.ToString(), "{[35,40)}"); |
+ range_set.Intersect(gfx::Range(35, 35)); |
+ EXPECT_EQ(range_set.ToString(), "{}"); |
+ } |
+ { |
+ RangeSet range_set; |
+ range_set.Union(gfx::Range(10, 20)); |
+ range_set.Union(gfx::Range(30, 40)); |
+ range_set.Union(gfx::Range(50, 60)); |
+ |
+ RangeSet range_set_2; |
+ range_set_2.Union(gfx::Range(12, 17)); |
+ range_set_2.Union(gfx::Range(25, 35)); |
+ range_set_2.Union(gfx::Range(39, 55)); |
+ range_set_2.Union(gfx::Range(59, 100)); |
+ |
+ range_set.Intersect(range_set_2); |
+ EXPECT_EQ(range_set.ToString(), "{[12,17)[30,35)[39,40)[50,55)[59,60)}"); |
+ } |
+} |
+ |
+TEST(RangeSetTest, Subtract) { |
+ { |
+ RangeSet range_set; |
+ range_set.Union(gfx::Range(10, 20)); |
+ range_set.Union(gfx::Range(30, 40)); |
+ range_set.Union(gfx::Range(50, 60)); |
+ |
+ EXPECT_EQ(range_set.ToString(), "{[10,20)[30,40)[50,60)}"); |
+ range_set.Subtract(gfx::Range(35, 35)); |
+ EXPECT_EQ(range_set.ToString(), "{[10,20)[30,40)[50,60)}"); |
+ range_set.Subtract(gfx::Range(0, 5)); |
+ EXPECT_EQ(range_set.ToString(), "{[10,20)[30,40)[50,60)}"); |
+ range_set.Subtract(gfx::Range(70, 80)); |
+ EXPECT_EQ(range_set.ToString(), "{[10,20)[30,40)[50,60)}"); |
+ range_set.Subtract(gfx::Range(35, 39)); |
+ EXPECT_EQ(range_set.ToString(), "{[10,20)[30,35)[39,40)[50,60)}"); |
+ range_set.Subtract(gfx::Range(15, 32)); |
+ EXPECT_EQ(range_set.ToString(), "{[10,15)[32,35)[39,40)[50,60)}"); |
+ range_set.Subtract(gfx::Range(15, 55)); |
+ EXPECT_EQ(range_set.ToString(), "{[10,15)[55,60)}"); |
+ range_set.Subtract(gfx::Range(0, 100)); |
+ EXPECT_EQ(range_set.ToString(), "{}"); |
+ } |
+ { |
+ RangeSet range_set; |
+ range_set.Union(gfx::Range(10, 20)); |
+ range_set.Union(gfx::Range(30, 40)); |
+ range_set.Union(gfx::Range(50, 60)); |
+ range_set.Subtract(range_set); |
+ EXPECT_EQ(range_set.ToString(), "{}"); |
+ } |
+ { |
+ RangeSet range_set; |
+ range_set.Union(gfx::Range(10, 20)); |
+ range_set.Union(gfx::Range(30, 40)); |
+ range_set.Union(gfx::Range(50, 60)); |
+ |
+ RangeSet range_set_2; |
+ range_set_2.Union(gfx::Range(12, 17)); |
+ range_set_2.Union(gfx::Range(25, 35)); |
+ range_set_2.Union(gfx::Range(39, 55)); |
+ range_set_2.Union(gfx::Range(59, 100)); |
+ |
+ range_set.Subtract(range_set_2); |
+ EXPECT_EQ(range_set.ToString(), "{[10,12)[17,20)[35,39)[55,59)}"); |
+ } |
+} |
+ |
+TEST(RangeSetTest, Diff) { |
+ { |
+ RangeSet range_set; |
+ range_set.Union(gfx::Range(10, 20)); |
+ range_set.Union(gfx::Range(30, 40)); |
+ range_set.Union(gfx::Range(50, 60)); |
+ range_set.Diff(range_set); |
+ EXPECT_EQ(range_set.ToString(), "{}"); |
+ } |
+ { |
+ RangeSet range_set; |
+ range_set.Union(gfx::Range(10, 20)); |
+ range_set.Union(gfx::Range(30, 40)); |
+ range_set.Union(gfx::Range(50, 60)); |
+ |
+ RangeSet range_set_2; |
+ range_set_2.Union(gfx::Range(12, 17)); |
+ range_set_2.Union(gfx::Range(25, 35)); |
+ range_set_2.Union(gfx::Range(39, 55)); |
+ range_set_2.Union(gfx::Range(59, 100)); |
+ |
+ range_set.Diff(range_set_2); |
+ EXPECT_EQ(range_set.ToString(), |
+ "{[10,12)[17,20)[25,30)[35,39)[40,50)[55,59)[60,100)}"); |
+ } |
+} |
+ |
+TEST(RangeSetTest, OperationsOnEmptySet) { |
+ RangeSet range_set; |
+ range_set.Intersect(gfx::Range(10, 20)); |
+ range_set.Intersects(gfx::Range(10, 20)); |
+ range_set.Subtract(gfx::Range(10, 20)); |
+ range_set.Diff(gfx::Range(30, 40)); |
+ range_set.Union(gfx::Range(10, 20)); |
+} |
+ |
+} // namespace chrome_pdf |