aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/StreamTest.cpp
diff options
context:
space:
mode:
authorGravatar bungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-05-29 13:43:31 +0000
committerGravatar bungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-05-29 13:43:31 +0000
commit6cab1a4b6a68aa81237731308ff37a646d48f51c (patch)
tree9fbab394aea93cd4a8a828e48ed325366d8f79e0 /tests/StreamTest.cpp
parent6320e8f393539b7a536b32b5a072a474709da5ff (diff)
Change SkStream.
Diffstat (limited to 'tests/StreamTest.cpp')
-rw-r--r--tests/StreamTest.cpp76
1 files changed, 9 insertions, 67 deletions
diff --git a/tests/StreamTest.cpp b/tests/StreamTest.cpp
index d0a8507241..8f38f46bea 100644
--- a/tests/StreamTest.cpp
+++ b/tests/StreamTest.cpp
@@ -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 @@ static void test_filestreams(skiatest::Reporter* reporter, const char* tmpDir) {
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 @@ static void TestWStream(skiatest::Reporter* reporter) {
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 TestNullData() {
}
static void TestStreams(skiatest::Reporter* reporter) {
- TestRStream(reporter);
TestWStream(reporter);
TestPackedUInt(reporter);
TestNullData();