OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "Resources.h" | 8 #include "Resources.h" |
9 #include "SkData.h" | 9 #include "SkData.h" |
10 #include "SkFrontBufferedStream.h" | 10 #include "SkFrontBufferedStream.h" |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
266 for (size_t i = 1; i < fileStream.getLength(); i++) { | 266 for (size_t i = 1; i < fileStream.getLength(); i++) { |
267 REPORTER_ASSERT(reporter, !fileStream.peek(storage.get(), i)); | 267 REPORTER_ASSERT(reporter, !fileStream.peek(storage.get(), i)); |
268 } | 268 } |
269 | 269 |
270 // Now test some FrontBufferedStreams | 270 // Now test some FrontBufferedStreams |
271 for (size_t i = 1; i < memStream.getLength(); i++) { | 271 for (size_t i = 1; i < memStream.getLength(); i++) { |
272 test_peeking_front_buffered_stream(reporter, memStream, i); | 272 test_peeking_front_buffered_stream(reporter, memStream, i); |
273 } | 273 } |
274 } | 274 } |
275 #endif | 275 #endif |
276 | |
277 // Asserts that asset == expected and is peekable. | |
278 static void stream_peek_test(skiatest::Reporter*rep, | |
279 SkStreamAsset* asset, | |
280 const SkData* expected) { | |
281 if (asset->getLength() != expected->size()) { | |
282 ERRORF(rep, "Unexpected length."); | |
283 return; | |
284 } | |
285 SkRandom rand; | |
286 uint8_t buffer[4096]; | |
287 const uint8_t* expect = expected->bytes(); | |
288 for (unsigned i = 0; i < asset->getLength(); ++i) { | |
289 size_t size = (rand.nextU() % sizeof(buffer)) + 1; | |
scroggo
2015/05/20 15:43:35
Why not rand.nextRangeU(1, sizeof(buffer))?
hal.canary
2015/05/21 13:28:02
Done.
| |
290 size = SkTMin(size, asset->getLength() - i); | |
291 if (size > 0) { | |
scroggo
2015/05/20 15:43:35
Can size ever be 0? I guess with an empty asset? I
hal.canary
2015/05/21 13:28:02
Done.
Of course size is always > 0!
| |
292 SkASSERT(size <= sizeof(buffer)); | |
293 if (!asset->peek(buffer, size)) { | |
294 ERRORF(rep, "Peek Failed!"); | |
295 return; | |
296 } | |
297 if (0 != memcmp(buffer, &expect[i], size)) { | |
298 ERRORF(rep, "Peek returned wrong bytes!"); | |
299 return; | |
300 } | |
301 } | |
302 uint8_t value; | |
303 asset->read(&value, 1); | |
scroggo
2015/05/20 15:43:35
Check the return value too?
hal.canary
2015/05/21 13:28:02
Done.
| |
304 if (value != expect[i]) { | |
305 ERRORF(rep, "Read Failed!"); | |
306 return; | |
307 } | |
308 } | |
309 } | |
310 | |
311 DEF_TEST(StreamPeek_BlockMemoryStream, rep) { | |
312 const static int kSeed = 1234; | |
313 SkRandom valueSource(kSeed); | |
314 SkRandom rand(kSeed << 1); | |
315 uint8_t buffer[4096]; | |
316 SkDynamicMemoryWStream dynamicMemoryWStream; | |
317 for (int i = 0; i < 32; ++i) { | |
318 // Randomize the length of the blocks. | |
319 size_t size = (rand.nextU() % sizeof(buffer)) + 1; | |
320 SkASSERT(size <= sizeof(buffer)); | |
321 for (unsigned j = 0; j < size; ++j) { | |
322 buffer[j] = valueSource.nextU() & 0xFF; | |
323 } | |
324 dynamicMemoryWStream.write(buffer, size); | |
325 } | |
326 SkAutoTDelete<SkStreamAsset> asset(dynamicMemoryWStream.detachAsStream()); | |
327 SkAutoTUnref<SkData> expected(SkData::NewUninitialized(asset->getLength())); | |
328 uint8_t* expectedPtr = static_cast<uint8_t*>(expected->writable_data()); | |
329 valueSource.setSeed(kSeed); // reseed. | |
scroggo
2015/05/20 15:43:35
So if I understand correctly, you're just trying t
hal.canary
2015/05/21 13:28:02
Acknowledged.
| |
330 for (unsigned i = 0; i < asset->getLength(); ++i) { | |
331 expectedPtr[i] = valueSource.nextU() & 0xFF; | |
332 } | |
333 stream_peek_test(rep, asset, expected); | |
334 } | |
OLD | NEW |