Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(367)

Side by Side Diff: pkg/analyzer/test/src/summary/flat_buffers_test.dart

Issue 1564913004: Initial flat buffers implementation. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 }
87 // read and verify
88 BufferPointer object = new BufferPointer.fromBytes(byteList).derefObject();
89 expect(const Int8Reader().vTableGet(object, 0), 10);
90 expect(const Int32Reader().vTableGet(object, 1), 20);
91 expect(const StringReader().vTableGet(object, 2), '12345');
92 expect(const Int32Reader().vTableGet(object, 3), 40);
93 }
94
95 void test_writeList_ofObjects() {
96 List<int> byteList;
97 {
98 Builder builder = new Builder(initialSize: 0);
99 // write the object #1
100 Offset object1;
101 {
102 builder.startTable();
103 builder.addInt32(0, 10);
104 builder.addInt32(1, 20);
105 object1 = builder.endTable();
106 }
107 // write the object #1
108 Offset object2;
109 {
110 builder.startTable();
111 builder.addInt32(0, 100);
112 builder.addInt32(1, 200);
113 object2 = builder.endTable();
114 }
115 // write the line
116 Offset offset = builder.writeList([object1, object2]);
117 byteList = builder.finish(offset);
118 }
119 // read and verify
120 BufferPointer root = new BufferPointer.fromBytes(byteList);
121 List<TestPointReader> items =
122 const ListReader<TestPointReader>(const TestPointReader()).read(root);
123 expect(items, hasLength(2));
124 expect(items[0].x, 10);
125 expect(items[0].y, 20);
126 expect(items[1].x, 100);
127 expect(items[1].y, 200);
128 }
129
130 void test_writeList_ofStrings_asRoot() {
131 List<int> byteList;
132 {
133 Builder builder = new Builder(initialSize: 0);
134 Offset<String> str1 = builder.writeString('12345');
135 Offset<String> str2 = builder.writeString('ABC');
136 Offset offset = builder.writeList([str1, str2]);
137 byteList = builder.finish(offset);
138 }
139 // read and verify
140 BufferPointer root = new BufferPointer.fromBytes(byteList);
141 List<String> items =
142 const ListReader<String>(const StringReader()).read(root);
143 expect(items, hasLength(2));
144 expect(items, contains('12345'));
145 expect(items, contains('ABC'));
146 }
147
148 void test_writeList_ofStrings_inObject() {
149 List<int> byteList;
150 {
151 Builder builder = new Builder(initialSize: 0);
152 Offset listOffset = builder.writeList(
153 [builder.writeString('12345'), builder.writeString('ABC')]);
154 builder.startTable();
155 builder.addOffset(0, listOffset);
156 Offset offset = builder.endTable();
157 byteList = builder.finish(offset);
158 }
159 // read and verify
160 BufferPointer root = new BufferPointer.fromBytes(byteList);
161 StringListWrapperReader reader = new StringListWrapperReader().read(root);
162 List<String> items = reader.items;
163 expect(items, hasLength(2));
164 expect(items, contains('12345'));
165 expect(items, contains('ABC'));
166 }
167 }
168
169 class StringListWrapperReader extends TableReader<StringListWrapperReader> {
170 final BufferPointer bp;
171
172 const StringListWrapperReader() : bp = null;
173
174 StringListWrapperReader._(this.bp);
175
176 List<String> get items =>
177 const ListReader<String>(const StringReader()).vTableGet(bp, 0);
178
179 @override
180 StringListWrapperReader createReader(BufferPointer object) {
181 return new StringListWrapperReader._(object);
182 }
183 }
184
185 class TestPointReader extends TableReader<TestPointReader> {
186 final BufferPointer bp;
187
188 const TestPointReader() : bp = null;
189
190 TestPointReader._(this.bp);
191
192 int get x => const Int32Reader().vTableGet(bp, 0, 0);
193
194 int get y => const Int32Reader().vTableGet(bp, 1, 0);
195
196 @override
197 TestPointReader createReader(BufferPointer object) {
198 return new TestPointReader._(object);
199 }
200 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698