OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 "SkOrderedWriteBuffer.h" | 8 #include "SkOrderedWriteBuffer.h" |
9 #include "SkValidatingReadBuffer.h" | 9 #include "SkValidatingReadBuffer.h" |
10 #include "Test.h" | 10 #include "Test.h" |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 writer.setFlags(SkOrderedWriteBuffer::kValidation_Flag); | 102 writer.setFlags(SkOrderedWriteBuffer::kValidation_Flag); |
103 SerializationUtils<T>::Write(writer, testObj); | 103 SerializationUtils<T>::Write(writer, testObj); |
104 size_t bytesWritten = writer.bytesWritten(); | 104 size_t bytesWritten = writer.bytesWritten(); |
105 REPORTER_ASSERT(reporter, SkAlign4(bytesWritten) == bytesWritten); | 105 REPORTER_ASSERT(reporter, SkAlign4(bytesWritten) == bytesWritten); |
106 | 106 |
107 unsigned char dataWritten[1024]; | 107 unsigned char dataWritten[1024]; |
108 writer.writeToMemory(dataWritten); | 108 writer.writeToMemory(dataWritten); |
109 | 109 |
110 // Make sure this fails when it should (test with smaller size, but still mu
ltiple of 4) | 110 // Make sure this fails when it should (test with smaller size, but still mu
ltiple of 4) |
111 SkValidatingReadBuffer buffer(dataWritten, bytesWritten - 4); | 111 SkValidatingReadBuffer buffer(dataWritten, bytesWritten - 4); |
112 const unsigned char* peekBefore = static_cast<const unsigned char*>(buffer.s
kip(0)); | 112 T obj; |
113 SerializationUtils<T>::Read(buffer, testObj); | 113 SerializationUtils<T>::Read(buffer, &obj); |
114 const unsigned char* peekAfter = static_cast<const unsigned char*>(buffer.sk
ip(0)); | 114 REPORTER_ASSERT(reporter, !buffer.validate(true)); |
115 // This should have failed, since the buffer is too small to read a matrix f
rom it | |
116 REPORTER_ASSERT(reporter, peekBefore == peekAfter); | |
117 | 115 |
118 // Make sure this succeeds when it should | 116 // Make sure this succeeds when it should |
119 SkValidatingReadBuffer buffer2(dataWritten, bytesWritten); | 117 SkValidatingReadBuffer buffer2(dataWritten, bytesWritten); |
120 peekBefore = static_cast<const unsigned char*>(buffer2.skip(0)); | 118 const unsigned char* peekBefore = static_cast<const unsigned char*>(buffer2.
skip(0)); |
121 SerializationUtils<T>::Read(buffer2, testObj); | 119 T obj2; |
122 peekAfter = static_cast<const unsigned char*>(buffer2.skip(0)); | 120 SerializationUtils<T>::Read(buffer2, &obj2); |
| 121 const unsigned char* peekAfter = static_cast<const unsigned char*>(buffer2.s
kip(0)); |
123 // This should have succeeded, since there are enough bytes to read this | 122 // This should have succeeded, since there are enough bytes to read this |
| 123 REPORTER_ASSERT(reporter, buffer2.validate(true)); |
124 REPORTER_ASSERT(reporter, static_cast<size_t>(peekAfter - peekBefore) == byt
esWritten); | 124 REPORTER_ASSERT(reporter, static_cast<size_t>(peekAfter - peekBefore) == byt
esWritten); |
125 | 125 |
126 TestAlignment(testObj, reporter); | 126 TestAlignment(testObj, reporter); |
127 } | 127 } |
128 | 128 |
129 template<typename T> | 129 template<typename T> |
130 static void TestArraySerialization(T* data, skiatest::Reporter* reporter) { | 130 static void TestArraySerialization(T* data, skiatest::Reporter* reporter) { |
131 SkOrderedWriteBuffer writer(1024); | 131 SkOrderedWriteBuffer writer(1024); |
132 writer.setFlags(SkOrderedWriteBuffer::kValidation_Flag); | 132 writer.setFlags(SkOrderedWriteBuffer::kValidation_Flag); |
133 SerializationUtils<T>::Write(writer, data, kArraySize); | 133 SerializationUtils<T>::Write(writer, data, kArraySize); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 | 203 |
204 // Test readScalarArray | 204 // Test readScalarArray |
205 { | 205 { |
206 SkScalar data[kArraySize]; | 206 SkScalar data[kArraySize]; |
207 TestArraySerialization(data, reporter); | 207 TestArraySerialization(data, reporter); |
208 } | 208 } |
209 } | 209 } |
210 | 210 |
211 #include "TestClassDef.h" | 211 #include "TestClassDef.h" |
212 DEFINE_TESTCLASS("Serialization", SerializationClass, Tests) | 212 DEFINE_TESTCLASS("Serialization", SerializationClass, Tests) |
OLD | NEW |