Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: tests/TSetTest.cpp

Issue 1038523004: SkPDF SkPDFObject::addResources signature simplified (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2015-03-25 (Wednesday) 15:53:41 EDT Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/pdf/SkTSet.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #include "SkTSet.h"
9 #include "Test.h"
10
11 // Tests the SkTSet<T> class template.
12 // Functions that just call SkTDArray are not tested.
13
14 static void TestTSet_basic(skiatest::Reporter* reporter) {
15 SkTSet<int> set0;
16 REPORTER_ASSERT(reporter, set0.isEmpty());
17 REPORTER_ASSERT(reporter, !set0.contains(-1));
18 REPORTER_ASSERT(reporter, !set0.contains(0));
19 REPORTER_ASSERT(reporter, !set0.contains(1));
20 REPORTER_ASSERT(reporter, set0.count() == 0);
21
22 REPORTER_ASSERT(reporter, set0.add(0));
23 REPORTER_ASSERT(reporter, !set0.isEmpty());
24 REPORTER_ASSERT(reporter, !set0.contains(-1));
25 REPORTER_ASSERT(reporter, set0.contains(0));
26 REPORTER_ASSERT(reporter, !set0.contains(1));
27 REPORTER_ASSERT(reporter, set0.count() == 1);
28 REPORTER_ASSERT(reporter, !set0.add(0));
29 REPORTER_ASSERT(reporter, set0.count() == 1);
30
31 #ifdef SK_DEBUG
32 set0.validate();
33 #endif
34 }
35
36 #define COUNT 1732
37 #define PRIME1 10007
38 #define PRIME2 1733
39
40 // Generates a series of positive unique pseudo-random numbers.
41 static int f(int i) {
42 return (long(i) * PRIME1) % PRIME2;
43 }
44
45 // Will expose contains() too.
46 static void TestTSet_advanced(skiatest::Reporter* reporter) {
47 SkTSet<int> set0;
48
49 for (int i = 0; i < COUNT; i++) {
50 REPORTER_ASSERT(reporter, !set0.contains(f(i)));
51 if (i > 0) {
52 REPORTER_ASSERT(reporter, set0.contains(f(0)));
53 REPORTER_ASSERT(reporter, set0.contains(f(i / 2)));
54 REPORTER_ASSERT(reporter, set0.contains(f(i - 1)));
55 }
56 REPORTER_ASSERT(reporter, !set0.contains(f(i)));
57 REPORTER_ASSERT(reporter, set0.count() == i);
58 REPORTER_ASSERT(reporter, set0.add(f(i)));
59 REPORTER_ASSERT(reporter, set0.contains(f(i)));
60 REPORTER_ASSERT(reporter, set0.count() == i + 1);
61 REPORTER_ASSERT(reporter, !set0.add(f(i)));
62 }
63
64 // Test deterministic output
65 for (int i = 0; i < COUNT; i++) {
66 REPORTER_ASSERT(reporter, set0[i] == f(i));
67 }
68
69 // Test copy constructor too.
70 SkTSet<int> set1 = set0;
71
72 REPORTER_ASSERT(reporter, set0.count() == set1.count());
73 REPORTER_ASSERT(reporter, !set1.contains(-1000));
74
75 for (int i = 0; i < COUNT; i++) {
76 REPORTER_ASSERT(reporter, set1.contains(f(i)));
77 REPORTER_ASSERT(reporter, set1[i] == f(i));
78 }
79
80 // Test operator= too.
81 SkTSet<int> set2;
82 set2 = set0;
83
84 REPORTER_ASSERT(reporter, set0.count() == set2.count());
85 REPORTER_ASSERT(reporter, !set2.contains(-1000));
86
87 for (int i = 0; i < COUNT; i++) {
88 REPORTER_ASSERT(reporter, set2.contains(f(i)));
89 REPORTER_ASSERT(reporter, set2[i] == f(i));
90 }
91
92 #ifdef SK_DEBUG
93 set0.validate();
94 set1.validate();
95 set2.validate();
96 #endif
97 }
98
99 static void TestTSet_merge(skiatest::Reporter* reporter) {
100 SkTSet<int> set;
101 SkTSet<int> setOdd;
102
103 for (int i = 0; i < COUNT; i++) {
104 REPORTER_ASSERT(reporter, set.add(2 * i));
105 REPORTER_ASSERT(reporter, setOdd.add(2 * i + 1));
106 }
107 // mergeInto returns the number of duplicates. Expected 0.
108 REPORTER_ASSERT(reporter, set.mergeInto(setOdd) == 0);
109 REPORTER_ASSERT(reporter, set.count() == 2 * COUNT);
110
111 // mergeInto should now find all new numbers duplicate.
112 REPORTER_ASSERT(reporter, set.mergeInto(setOdd) == setOdd.count());
113 REPORTER_ASSERT(reporter, set.count() == 2 * COUNT);
114
115 for (int i = 0; i < 2 * COUNT; i++) {
116 REPORTER_ASSERT(reporter, set.contains(i));
117 }
118
119 // check deterministic output
120 for (int i = 0; i < COUNT; i++) {
121 REPORTER_ASSERT(reporter, set[i] == 2 * i);
122 REPORTER_ASSERT(reporter, set[COUNT + i] == 2 * i + 1);
123 }
124
125 #ifdef SK_DEBUG
126 set.validate();
127 setOdd.validate();
128 #endif
129 }
130
131 DEF_TEST(TSet, reporter) {
132 TestTSet_basic(reporter);
133 TestTSet_advanced(reporter);
134 TestTSet_merge(reporter);
135 }
OLDNEW
« no previous file with comments | « src/pdf/SkTSet.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698