Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 library test.src.summary.flat_buffers_test; | |
| 6 | |
| 7 import 'package:analyzer/src/summary/flat_buffers.dart'; | |
| 8 import 'package:unittest/unittest.dart'; | |
| 9 | |
| 10 import '../../reflective_tests.dart'; | |
| 11 | |
| 12 main() { | |
| 13 groupSep = ' | '; | |
| 14 runReflectiveTests(BuilderTest); | |
| 15 } | |
| 16 | |
| 17 @reflectiveTest | |
| 18 class BuilderTest { | |
| 19 void test_error_addInt32_withoutStartTable() { | |
| 20 Builder builder = new Builder(); | |
| 21 expect(() { | |
| 22 builder.addInt32(0, 0); | |
| 23 }, throwsStateError); | |
| 24 } | |
| 25 | |
| 26 void test_error_addOffset_withoutStartTable() { | |
| 27 Builder builder = new Builder(); | |
| 28 expect(() { | |
| 29 builder.addOffset(0, new Offset(0)); | |
| 30 }, throwsStateError); | |
| 31 } | |
| 32 | |
| 33 void test_error_endTable_withoutStartTable() { | |
| 34 Builder builder = new Builder(); | |
| 35 expect(() { | |
| 36 builder.endTable(); | |
| 37 }, throwsStateError); | |
| 38 } | |
| 39 | |
| 40 void test_error_startTable_duringTable() { | |
| 41 Builder builder = new Builder(); | |
| 42 builder.startTable(); | |
| 43 expect(() { | |
| 44 builder.startTable(); | |
| 45 }, throwsStateError); | |
| 46 } | |
| 47 | |
| 48 void test_error_writeString_duringTable() { | |
| 49 Builder builder = new Builder(); | |
| 50 builder.startTable(); | |
| 51 expect(() { | |
| 52 builder.writeString('12345'); | |
| 53 }, throwsStateError); | |
| 54 } | |
| 55 | |
| 56 void test_table_default() { | |
| 57 List<int> byteList; | |
| 58 { | |
| 59 Builder builder = new Builder(initialSize: 0); | |
| 60 builder.startTable(); | |
| 61 builder.addInt32(0, 10, 10); | |
| 62 builder.addInt32(1, 20, 10); | |
| 63 Offset offset = builder.endTable(); | |
| 64 byteList = builder.finish(offset); | |
| 65 } | |
| 66 // read and verify | |
| 67 BufferPointer object = new BufferPointer.fromBytes(byteList).derefObject(); | |
| 68 // was not written, so uses the new default value | |
| 69 expect(const Int32Reader().vTableGet(object, 0, 15), 15); | |
| 70 // has the written value | |
| 71 expect(const Int32Reader().vTableGet(object, 1, 15), 20); | |
| 72 } | |
| 73 | |
| 74 void test_table_types() { | |
| 75 List<int> byteList; | |
| 76 { | |
| 77 Builder builder = new Builder(initialSize: 0); | |
| 78 Offset<String> stringOffset = builder.writeString('12345'); | |
| 79 builder.startTable(); | |
| 80 builder.addInt8(0, 10); | |
| 81 builder.addInt32(1, 20); | |
| 82 builder.addOffset(2, stringOffset); | |
| 83 builder.addInt32(3, 40); | |
| 84 Offset offset = builder.endTable(); | |
| 85 byteList = builder.finish(offset); | |
| 86 // byteList.asMap().forEach((i, v) => print('${1000 + i}: $v')); | |
|
Paul Berry
2016/01/07 22:44:54
Looks like this was left in by accident.
| |
| 87 } | |
| 88 // read and verify | |
| 89 BufferPointer object = new BufferPointer.fromBytes(byteList).derefObject(); | |
| 90 expect(const Int8Reader().vTableGet(object, 0), 10); | |
| 91 expect(const Int32Reader().vTableGet(object, 1), 20); | |
| 92 expect(const StringReader().vTableGet(object, 2), '12345'); | |
| 93 expect(const Int32Reader().vTableGet(object, 3), 40); | |
| 94 } | |
| 95 | |
| 96 void test_writeList_ofObjects() { | |
| 97 List<int> byteList; | |
| 98 { | |
| 99 Builder builder = new Builder(initialSize: 0); | |
| 100 // write the object #1 | |
| 101 Offset object1; | |
| 102 { | |
| 103 builder.startTable(); | |
| 104 builder.addInt32(0, 10); | |
| 105 builder.addInt32(1, 20); | |
| 106 object1 = builder.endTable(); | |
| 107 } | |
| 108 // write the object #1 | |
| 109 Offset object2; | |
| 110 { | |
| 111 builder.startTable(); | |
| 112 builder.addInt32(0, 100); | |
| 113 builder.addInt32(1, 200); | |
| 114 object2 = builder.endTable(); | |
| 115 } | |
| 116 // write the line | |
| 117 Offset offset = builder.writeList([object1, object2]); | |
| 118 byteList = builder.finish(offset); | |
| 119 } | |
| 120 // read and verify | |
| 121 BufferPointer root = new BufferPointer.fromBytes(byteList); | |
| 122 List<TestPointReader> items = | |
| 123 const ListReader<TestPointReader>(const TestPointReader()).read(root); | |
| 124 expect(items, hasLength(2)); | |
| 125 expect(items[0].x, 10); | |
| 126 expect(items[0].y, 20); | |
| 127 expect(items[1].x, 100); | |
| 128 expect(items[1].y, 200); | |
| 129 } | |
| 130 | |
| 131 void test_writeList_ofStrings_asRoot() { | |
| 132 List<int> byteList; | |
| 133 { | |
| 134 Builder builder = new Builder(initialSize: 0); | |
| 135 Offset<String> str1 = builder.writeString('12345'); | |
| 136 Offset<String> str2 = builder.writeString('ABC'); | |
| 137 Offset offset = builder.writeList([str1, str2]); | |
| 138 byteList = builder.finish(offset); | |
| 139 } | |
| 140 // read and verify | |
| 141 BufferPointer root = new BufferPointer.fromBytes(byteList); | |
| 142 List<String> items = | |
| 143 const ListReader<String>(const StringReader()).read(root); | |
| 144 expect(items, hasLength(2)); | |
| 145 expect(items, contains('12345')); | |
| 146 expect(items, contains('ABC')); | |
| 147 } | |
| 148 | |
| 149 void test_writeList_ofStrings_inObject() { | |
| 150 List<int> byteList; | |
| 151 { | |
| 152 Builder builder = new Builder(initialSize: 0); | |
| 153 Offset listOffset = builder.writeList( | |
| 154 [builder.writeString('12345'), builder.writeString('ABC')]); | |
| 155 builder.startTable(); | |
| 156 builder.addOffset(0, listOffset); | |
| 157 Offset offset = builder.endTable(); | |
| 158 byteList = builder.finish(offset); | |
| 159 } | |
| 160 // read and verify | |
| 161 BufferPointer root = new BufferPointer.fromBytes(byteList); | |
| 162 StringListWrapperReader reader = new StringListWrapperReader().read(root); | |
| 163 List<String> items = reader.items; | |
| 164 expect(items, hasLength(2)); | |
| 165 expect(items, contains('12345')); | |
| 166 expect(items, contains('ABC')); | |
| 167 } | |
| 168 } | |
| 169 | |
| 170 class StringListWrapperReader extends TableReader<StringListWrapperReader> { | |
| 171 final BufferPointer bp; | |
| 172 | |
| 173 const StringListWrapperReader() : bp = null; | |
| 174 | |
| 175 StringListWrapperReader._(this.bp); | |
| 176 | |
| 177 List<String> get items => | |
| 178 const ListReader<String>(const StringReader()).vTableGet(bp, 0); | |
| 179 | |
| 180 @override | |
| 181 StringListWrapperReader createReader(BufferPointer object) { | |
| 182 return new StringListWrapperReader._(object); | |
| 183 } | |
| 184 } | |
| 185 | |
| 186 class TestPointReader extends TableReader<TestPointReader> { | |
| 187 final BufferPointer bp; | |
| 188 | |
| 189 const TestPointReader() : bp = null; | |
| 190 | |
| 191 TestPointReader._(this.bp); | |
| 192 | |
| 193 int get x => const Int32Reader().vTableGet(bp, 0, 0); | |
| 194 | |
| 195 int get y => const Int32Reader().vTableGet(bp, 1, 0); | |
| 196 | |
| 197 @override | |
| 198 TestPointReader createReader(BufferPointer object) { | |
| 199 return new TestPointReader._(object); | |
| 200 } | |
| 201 } | |
| OLD | NEW |