OLD | NEW |
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 "SkData.h" | 9 #include "SkData.h" |
10 #include "SkDataSet.h" | |
11 #include "SkDataTable.h" | 10 #include "SkDataTable.h" |
12 #include "SkOrderedReadBuffer.h" | 11 #include "SkOrderedReadBuffer.h" |
13 #include "SkOrderedWriteBuffer.h" | 12 #include "SkOrderedWriteBuffer.h" |
14 #include "SkOSFile.h" | 13 #include "SkOSFile.h" |
15 #include "SkStream.h" | 14 #include "SkStream.h" |
16 | 15 |
17 static void test_is_equal(skiatest::Reporter* reporter, | 16 static void test_is_equal(skiatest::Reporter* reporter, |
18 const SkDataTable* a, const SkDataTable* b) { | 17 const SkDataTable* a, const SkDataTable* b) { |
19 REPORTER_ASSERT(reporter, a->count() == b->count()); | 18 REPORTER_ASSERT(reporter, a->count() == b->count()); |
20 for (int i = 0; i < a->count(); ++i) { | 19 for (int i = 0; i < a->count(); ++i) { |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 } | 154 } |
156 | 155 |
157 static void TestDataTable(skiatest::Reporter* reporter) { | 156 static void TestDataTable(skiatest::Reporter* reporter) { |
158 test_emptytable(reporter); | 157 test_emptytable(reporter); |
159 test_simpletable(reporter); | 158 test_simpletable(reporter); |
160 test_vartable(reporter); | 159 test_vartable(reporter); |
161 test_tablebuilder(reporter); | 160 test_tablebuilder(reporter); |
162 test_globaltable(reporter); | 161 test_globaltable(reporter); |
163 } | 162 } |
164 | 163 |
165 static void unrefAll(const SkDataSet::Pair pairs[], int count) { | |
166 for (int i = 0; i < count; ++i) { | |
167 pairs[i].fValue->unref(); | |
168 } | |
169 } | |
170 | |
171 // asserts that inner is a subset of outer | |
172 static void test_dataset_subset(skiatest::Reporter* reporter, | |
173 const SkDataSet& outer, const SkDataSet& inner)
{ | |
174 SkDataSet::Iter iter(inner); | |
175 for (; !iter.done(); iter.next()) { | |
176 SkData* outerData = outer.find(iter.key()); | |
177 REPORTER_ASSERT(reporter, outerData); | |
178 REPORTER_ASSERT(reporter, outerData->equals(iter.value())); | |
179 } | |
180 } | |
181 | |
182 static void test_datasets_equal(skiatest::Reporter* reporter, | |
183 const SkDataSet& ds0, const SkDataSet& ds1) { | |
184 REPORTER_ASSERT(reporter, ds0.count() == ds1.count()); | |
185 | |
186 test_dataset_subset(reporter, ds0, ds1); | |
187 test_dataset_subset(reporter, ds1, ds0); | |
188 } | |
189 | |
190 static void test_dataset(skiatest::Reporter* reporter, const SkDataSet& ds, | |
191 int count) { | |
192 REPORTER_ASSERT(reporter, ds.count() == count); | |
193 | |
194 SkDataSet::Iter iter(ds); | |
195 int index = 0; | |
196 for (; !iter.done(); iter.next()) { | |
197 // const char* name = iter.key(); | |
198 // SkData* data = iter.value(); | |
199 // SkDebugf("[%d] %s:%s\n", index, name, (const char*)data->bytes()); | |
200 index += 1; | |
201 } | |
202 REPORTER_ASSERT(reporter, index == count); | |
203 | |
204 SkDynamicMemoryWStream ostream; | |
205 ds.writeToStream(&ostream); | |
206 SkMemoryStream istream; | |
207 istream.setData(ostream.copyToData())->unref(); | |
208 SkDataSet copy(&istream); | |
209 | |
210 test_datasets_equal(reporter, ds, copy); | |
211 } | |
212 | |
213 static void test_dataset(skiatest::Reporter* reporter) { | |
214 SkDataSet set0(NULL, 0); | |
215 SkDataSet set1("hello", SkAutoTUnref<SkData>(SkData::NewWithCString("world")
)); | |
216 | |
217 const SkDataSet::Pair pairs[] = { | |
218 { "one", SkData::NewWithCString("1") }, | |
219 { "two", SkData::NewWithCString("2") }, | |
220 { "three", SkData::NewWithCString("3") }, | |
221 }; | |
222 SkDataSet set3(pairs, 3); | |
223 unrefAll(pairs, 3); | |
224 | |
225 test_dataset(reporter, set0, 0); | |
226 test_dataset(reporter, set1, 1); | |
227 test_dataset(reporter, set3, 3); | |
228 } | |
229 | |
230 static void* gGlobal; | 164 static void* gGlobal; |
231 | 165 |
232 static void delete_int_proc(const void* ptr, size_t len, void* context) { | 166 static void delete_int_proc(const void* ptr, size_t len, void* context) { |
233 int* data = (int*)ptr; | 167 int* data = (int*)ptr; |
234 SkASSERT(context == gGlobal); | 168 SkASSERT(context == gGlobal); |
235 delete[] data; | 169 delete[] data; |
236 } | 170 } |
237 | 171 |
238 static void assert_len(skiatest::Reporter* reporter, SkData* ref, size_t len) { | 172 static void assert_len(skiatest::Reporter* reporter, SkData* ref, size_t len) { |
239 REPORTER_ASSERT(reporter, ref->size() == len); | 173 REPORTER_ASSERT(reporter, ref->size() == len); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 assert_data(reporter, r3, "people", 6); | 245 assert_data(reporter, r3, "people", 6); |
312 | 246 |
313 SkData* tmp = SkData::NewSubset(r1, strlen(str), 10); | 247 SkData* tmp = SkData::NewSubset(r1, strlen(str), 10); |
314 assert_len(reporter, tmp, 0); | 248 assert_len(reporter, tmp, 0); |
315 tmp->unref(); | 249 tmp->unref(); |
316 tmp = SkData::NewSubset(r1, 0, 0); | 250 tmp = SkData::NewSubset(r1, 0, 0); |
317 assert_len(reporter, tmp, 0); | 251 assert_len(reporter, tmp, 0); |
318 tmp->unref(); | 252 tmp->unref(); |
319 | 253 |
320 test_cstring(reporter); | 254 test_cstring(reporter); |
321 test_dataset(reporter); | |
322 test_files(reporter); | 255 test_files(reporter); |
323 } | 256 } |
324 | 257 |
325 #include "TestClassDef.h" | 258 #include "TestClassDef.h" |
326 DEFINE_TESTCLASS("Data", DataTestClass, TestData) | 259 DEFINE_TESTCLASS("Data", DataTestClass, TestData) |
327 DEFINE_TESTCLASS("DataTable", DataTableTestClass, TestDataTable) | 260 DEFINE_TESTCLASS("DataTable", DataTableTestClass, TestDataTable) |
OLD | NEW |