Index: tests/StreamTest.cpp |
=================================================================== |
--- tests/StreamTest.cpp (revision 9222) |
+++ tests/StreamTest.cpp (working copy) |
@@ -7,6 +7,7 @@ |
*/ |
#include "Test.h" |
#include "SkRandom.h" |
+#include "SkOSFile.h" |
#include "SkStream.h" |
#include "SkData.h" |
@@ -17,67 +18,6 @@ |
#define MAX_SIZE (256 * 1024) |
-static void random_fill(SkMWCRandom& rand, void* buffer, size_t size) { |
- char* p = (char*)buffer; |
- char* stop = p + size; |
- while (p < stop) { |
- *p++ = (char)(rand.nextU() >> 8); |
- } |
-} |
- |
-static void test_buffer(skiatest::Reporter* reporter) { |
- SkMWCRandom rand; |
- SkAutoMalloc am(MAX_SIZE * 2); |
- char* storage = (char*)am.get(); |
- char* storage2 = storage + MAX_SIZE; |
- |
- random_fill(rand, storage, MAX_SIZE); |
- |
- for (int sizeTimes = 0; sizeTimes < 100; sizeTimes++) { |
- int size = rand.nextU() % MAX_SIZE; |
- if (size == 0) { |
- size = MAX_SIZE; |
- } |
- for (int times = 0; times < 100; times++) { |
- int bufferSize = 1 + (rand.nextU() & 0xFFFF); |
- SkMemoryStream mstream(storage, size); |
- SkBufferStream bstream(&mstream, bufferSize); |
- |
- int bytesRead = 0; |
- while (bytesRead < size) { |
- int s = 17 + (rand.nextU() & 0xFFFF); |
- int ss = bstream.read(storage2, s); |
- REPORTER_ASSERT(reporter, ss > 0 && ss <= s); |
- REPORTER_ASSERT(reporter, bytesRead + ss <= size); |
- REPORTER_ASSERT(reporter, |
- memcmp(storage + bytesRead, storage2, ss) == 0); |
- bytesRead += ss; |
- } |
- REPORTER_ASSERT(reporter, bytesRead == size); |
- } |
- } |
-} |
- |
-static void TestRStream(skiatest::Reporter* reporter) { |
- static const char s[] = |
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; |
- char copy[sizeof(s)]; |
- SkMWCRandom rand; |
- |
- for (int i = 0; i < 65; i++) { |
- char* copyPtr = copy; |
- SkMemoryStream mem(s, sizeof(s)); |
- SkBufferStream buff(&mem, i); |
- |
- do { |
- copyPtr += buff.read(copyPtr, rand.nextU() & 15); |
- } while (copyPtr < copy + sizeof(s)); |
- REPORTER_ASSERT(reporter, copyPtr == copy + sizeof(s)); |
- REPORTER_ASSERT(reporter, memcmp(s, copy, sizeof(s)) == 0); |
- } |
- test_buffer(reporter); |
-} |
- |
static void test_loop_stream(skiatest::Reporter* reporter, SkStream* stream, |
const void* src, size_t len, int repeat) { |
SkAutoSMalloc<256> storage(len); |
@@ -118,16 +58,20 @@ |
SkFILEStream stream(path.c_str()); |
REPORTER_ASSERT(reporter, stream.isValid()); |
test_loop_stream(reporter, &stream, s, 26, 100); |
+ |
+ SkAutoTUnref<SkStreamAsset> stream2(stream.duplicate()); |
+ test_loop_stream(reporter, stream2.get(), s, 26, 100); |
} |
-#ifndef SK_BUILD_FOR_WIN |
{ |
- int fd = ::open(path.c_str(), O_RDONLY); |
- SkFDStream stream(fd, true); |
+ FILE* file = ::fopen(path.c_str(), "rb"); |
+ SkFILEStream stream(file, SkFILEStream::kCallerPasses_Ownership); |
REPORTER_ASSERT(reporter, stream.isValid()); |
test_loop_stream(reporter, &stream, s, 26, 100); |
+ |
+ SkAutoTUnref<SkStreamAsset> stream2(stream.duplicate()); |
+ test_loop_stream(reporter, stream2.get(), s, 26, 100); |
} |
-#endif |
} |
static void TestWStream(skiatest::Reporter* reporter) { |
@@ -142,7 +86,6 @@ |
dst[100*26] = '*'; |
ds.copyTo(dst); |
REPORTER_ASSERT(reporter, dst[100*26] == '*'); |
-// char* p = dst; |
for (i = 0; i < 100; i++) { |
REPORTER_ASSERT(reporter, memcmp(&dst[i * 26], s, 26) == 0); |
} |
@@ -210,7 +153,6 @@ |
} |
static void TestStreams(skiatest::Reporter* reporter) { |
- TestRStream(reporter); |
TestWStream(reporter); |
TestPackedUInt(reporter); |
TestNullData(); |