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

Side by Side Diff: tests/RegionTest.cpp

Issue 23576015: Change old PRG to be SkLCGRandom; change new one to SkRandom (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Fix some spurious SkMWCRandoms Created 7 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « tests/RandomTest.cpp ('k') | tests/Sk64Test.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "Test.h" 8 #include "Test.h"
9 #include "SkRegion.h" 9 #include "SkRegion.h"
10 #include "SkRandom.h" 10 #include "SkRandom.h"
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 REPORTER_ASSERT(reporter, !empty.contains(empty2)); 91 REPORTER_ASSERT(reporter, !empty.contains(empty2));
92 REPORTER_ASSERT(reporter, !valid.contains(empty)); 92 REPORTER_ASSERT(reporter, !valid.contains(empty));
93 REPORTER_ASSERT(reporter, !empty.contains(valid)); 93 REPORTER_ASSERT(reporter, !empty.contains(valid));
94 } 94 }
95 95
96 enum { 96 enum {
97 W = 256, 97 W = 256,
98 H = 256 98 H = 256
99 }; 99 };
100 100
101 static SkIRect randRect(SkMWCRandom& rand) { 101 static SkIRect randRect(SkRandom& rand) {
102 int x = rand.nextU() % W; 102 int x = rand.nextU() % W;
103 int y = rand.nextU() % H; 103 int y = rand.nextU() % H;
104 int w = rand.nextU() % W; 104 int w = rand.nextU() % W;
105 int h = rand.nextU() % H; 105 int h = rand.nextU() % H;
106 return SkIRect::MakeXYWH(x, y, w >> 1, h >> 1); 106 return SkIRect::MakeXYWH(x, y, w >> 1, h >> 1);
107 } 107 }
108 108
109 static void randRgn(SkMWCRandom& rand, SkRegion* rgn, int n) { 109 static void randRgn(SkRandom& rand, SkRegion* rgn, int n) {
110 rgn->setEmpty(); 110 rgn->setEmpty();
111 for (int i = 0; i < n; ++i) { 111 for (int i = 0; i < n; ++i) {
112 rgn->op(randRect(rand), SkRegion::kUnion_Op); 112 rgn->op(randRect(rand), SkRegion::kUnion_Op);
113 } 113 }
114 } 114 }
115 115
116 static bool slow_contains(const SkRegion& outer, const SkRegion& inner) { 116 static bool slow_contains(const SkRegion& outer, const SkRegion& inner) {
117 SkRegion tmp; 117 SkRegion tmp;
118 tmp.op(outer, inner, SkRegion::kUnion_Op); 118 tmp.op(outer, inner, SkRegion::kUnion_Op);
119 return outer == tmp; 119 return outer == tmp;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 bool c1 = slow_intersects(a, b); 176 bool c1 = slow_intersects(a, b);
177 REPORTER_ASSERT(reporter, c0 == c1); 177 REPORTER_ASSERT(reporter, c0 == c1);
178 178
179 test_intersects_iter(reporter, a); 179 test_intersects_iter(reporter, a);
180 test_intersects_iter(reporter, b); 180 test_intersects_iter(reporter, b);
181 } 181 }
182 182
183 static void test_proc(skiatest::Reporter* reporter, 183 static void test_proc(skiatest::Reporter* reporter,
184 void (*proc)(skiatest::Reporter*, 184 void (*proc)(skiatest::Reporter*,
185 const SkRegion& a, const SkRegion&)) { 185 const SkRegion& a, const SkRegion&)) {
186 SkMWCRandom rand; 186 SkRandom rand;
187 for (int i = 0; i < 10000; ++i) { 187 for (int i = 0; i < 10000; ++i) {
188 SkRegion outer; 188 SkRegion outer;
189 randRgn(rand, &outer, 8); 189 randRgn(rand, &outer, 8);
190 SkRegion inner; 190 SkRegion inner;
191 randRgn(rand, &inner, 2); 191 randRgn(rand, &inner, 2);
192 proc(reporter, outer, inner); 192 proc(reporter, outer, inner);
193 } 193 }
194 } 194 }
195 195
196 static void rand_rect(SkIRect* rect, SkMWCRandom& rand) { 196 static void rand_rect(SkIRect* rect, SkRandom& rand) {
197 int bits = 6; 197 int bits = 6;
198 int shift = 32 - bits; 198 int shift = 32 - bits;
199 rect->set(rand.nextU() >> shift, rand.nextU() >> shift, 199 rect->set(rand.nextU() >> shift, rand.nextU() >> shift,
200 rand.nextU() >> shift, rand.nextU() >> shift); 200 rand.nextU() >> shift, rand.nextU() >> shift);
201 rect->sort(); 201 rect->sort();
202 } 202 }
203 203
204 static bool test_rects(const SkIRect rect[], int count) { 204 static bool test_rects(const SkIRect rect[], int count) {
205 SkRegion rgn0, rgn1; 205 SkRegion rgn0, rgn1;
206 206
(...skipping 23 matching lines...) Expand all
230 REPORTER_ASSERT(reporter, test_rects(r2, SK_ARRAY_COUNT(r2))); 230 REPORTER_ASSERT(reporter, test_rects(r2, SK_ARRAY_COUNT(r2)));
231 231
232 const SkIRect rects[] = { 232 const SkIRect rects[] = {
233 { 0, 0, 1, 2 }, 233 { 0, 0, 1, 2 },
234 { 2, 1, 3, 3 }, 234 { 2, 1, 3, 3 },
235 { 4, 0, 5, 1 }, 235 { 4, 0, 5, 1 },
236 { 6, 0, 7, 4 }, 236 { 6, 0, 7, 4 },
237 }; 237 };
238 REPORTER_ASSERT(reporter, test_rects(rects, SK_ARRAY_COUNT(rects))); 238 REPORTER_ASSERT(reporter, test_rects(rects, SK_ARRAY_COUNT(rects)));
239 239
240 SkMWCRandom rand; 240 SkRandom rand;
241 for (int i = 0; i < 1000; i++) { 241 for (int i = 0; i < 1000; i++) {
242 SkRegion rgn0, rgn1; 242 SkRegion rgn0, rgn1;
243 243
244 const int N = 8; 244 const int N = 8;
245 SkIRect rect[N]; 245 SkIRect rect[N];
246 for (int j = 0; j < N; j++) { 246 for (int j = 0; j < N; j++) {
247 rand_rect(&rect[j], rand); 247 rand_rect(&rect[j], rand);
248 } 248 }
249 REPORTER_ASSERT(reporter, test_rects(rect, N)); 249 REPORTER_ASSERT(reporter, test_rects(rect, N));
250 } 250 }
251 251
252 test_proc(reporter, contains_proc); 252 test_proc(reporter, contains_proc);
253 test_proc(reporter, intersects_proc); 253 test_proc(reporter, intersects_proc);
254 test_empties(reporter); 254 test_empties(reporter);
255 test_fromchrome(reporter); 255 test_fromchrome(reporter);
256 } 256 }
257 257
258 #include "TestClassDef.h" 258 #include "TestClassDef.h"
259 DEFINE_TESTCLASS("Region", RegionTestClass, TestRegion) 259 DEFINE_TESTCLASS("Region", RegionTestClass, TestRegion)
OLDNEW
« no previous file with comments | « tests/RandomTest.cpp ('k') | tests/Sk64Test.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698