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

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: Fixes for review comments. 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_low() {
57 Builder builder = new Builder(initialSize: 0);
58 builder.lowReset();
59 expect((builder..lowWriteUint8(1)).lowFinish(), [1]);
60 expect((builder..lowWriteUint32(2)).lowFinish(), [2, 0, 0, 0, 0, 0, 0, 1]);
61 expect((builder..lowWriteUint8(3)).lowFinish(),
62 [0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 1]);
63 expect((builder..lowWriteUint8(4)).lowFinish(),
64 [0, 0, 4, 3, 2, 0, 0, 0, 0, 0, 0, 1]);
65 expect((builder..lowWriteUint8(5)).lowFinish(),
66 [0, 5, 4, 3, 2, 0, 0, 0, 0, 0, 0, 1]);
67 expect((builder..lowWriteUint32(6)).lowFinish(),
68 [6, 0, 0, 0, 0, 5, 4, 3, 2, 0, 0, 0, 0, 0, 0, 1]);
69 }
70
71 void test_table_default() {
72 List<int> byteList;
73 {
74 Builder builder = new Builder(initialSize: 0);
75 builder.startTable();
76 builder.addInt32(0, 10, 10);
77 builder.addInt32(1, 20, 10);
78 Offset offset = builder.endTable();
79 byteList = builder.finish(offset);
80 }
81 // read and verify
82 BufferPointer object = new BufferPointer.fromBytes(byteList).derefObject();
83 // was not written, so uses the new default value
84 expect(const Int32Reader().vTableGet(object, 0, 15), 15);
85 // has the written value
86 expect(const Int32Reader().vTableGet(object, 1, 15), 20);
87 }
88
89 void test_table_types() {
90 List<int> byteList;
91 {
92 Builder builder = new Builder(initialSize: 0);
93 Offset<String> stringOffset = builder.writeString('12345');
94 builder.startTable();
95 builder.addInt8(0, 10);
96 builder.addInt32(1, 20);
97 builder.addOffset(2, stringOffset);
98 builder.addInt32(3, 40);
99 Offset offset = builder.endTable();
100 byteList = builder.finish(offset);
101 }
102 // read and verify
103 BufferPointer object = new BufferPointer.fromBytes(byteList).derefObject();
104 expect(const Int8Reader().vTableGet(object, 0), 10);
105 expect(const Int32Reader().vTableGet(object, 1), 20);
106 expect(const StringReader().vTableGet(object, 2), '12345');
107 expect(const Int32Reader().vTableGet(object, 3), 40);
108 }
109
110 void test_writeList_ofObjects() {
111 List<int> byteList;
112 {
113 Builder builder = new Builder(initialSize: 0);
114 // write the object #1
115 Offset object1;
116 {
117 builder.startTable();
118 builder.addInt32(0, 10);
119 builder.addInt32(1, 20);
120 object1 = builder.endTable();
121 }
122 // write the object #1
123 Offset object2;
124 {
125 builder.startTable();
126 builder.addInt32(0, 100);
127 builder.addInt32(1, 200);
128 object2 = builder.endTable();
129 }
130 // write the line
131 Offset offset = builder.writeList([object1, object2]);
132 byteList = builder.finish(offset);
133 }
134 // read and verify
135 BufferPointer root = new BufferPointer.fromBytes(byteList);
136 List<TestPointReader> items =
137 const ListReader<TestPointReader>(const TestPointReader()).read(root);
138 expect(items, hasLength(2));
139 expect(items[0].x, 10);
140 expect(items[0].y, 20);
141 expect(items[1].x, 100);
142 expect(items[1].y, 200);
143 }
144
145 void test_writeList_ofStrings_asRoot() {
146 List<int> byteList;
147 {
148 Builder builder = new Builder(initialSize: 0);
149 Offset<String> str1 = builder.writeString('12345');
150 Offset<String> str2 = builder.writeString('ABC');
151 Offset offset = builder.writeList([str1, str2]);
152 byteList = builder.finish(offset);
153 }
154 // read and verify
155 BufferPointer root = new BufferPointer.fromBytes(byteList);
156 List<String> items =
157 const ListReader<String>(const StringReader()).read(root);
158 expect(items, hasLength(2));
159 expect(items, contains('12345'));
160 expect(items, contains('ABC'));
161 }
162
163 void test_writeList_ofStrings_inObject() {
164 List<int> byteList;
165 {
166 Builder builder = new Builder(initialSize: 0);
167 Offset listOffset = builder.writeList(
168 [builder.writeString('12345'), builder.writeString('ABC')]);
169 builder.startTable();
170 builder.addOffset(0, listOffset);
171 Offset offset = builder.endTable();
172 byteList = builder.finish(offset);
173 }
174 // read and verify
175 BufferPointer root = new BufferPointer.fromBytes(byteList);
176 StringListWrapperReader reader = new StringListWrapperReader().read(root);
177 List<String> items = reader.items;
178 expect(items, hasLength(2));
179 expect(items, contains('12345'));
180 expect(items, contains('ABC'));
181 }
182 }
183
184 class StringListWrapperReader extends TableReader<StringListWrapperReader> {
185 final BufferPointer bp;
186
187 const StringListWrapperReader() : bp = null;
188
189 StringListWrapperReader._(this.bp);
190
191 List<String> get items =>
192 const ListReader<String>(const StringReader()).vTableGet(bp, 0);
193
194 @override
195 StringListWrapperReader createReader(BufferPointer object) {
196 return new StringListWrapperReader._(object);
197 }
198 }
199
200 class TestPointReader extends TableReader<TestPointReader> {
201 final BufferPointer bp;
202
203 const TestPointReader() : bp = null;
204
205 TestPointReader._(this.bp);
206
207 int get x => const Int32Reader().vTableGet(bp, 0, 0);
208
209 int get y => const Int32Reader().vTableGet(bp, 1, 0);
210
211 @override
212 TestPointReader createReader(BufferPointer object) {
213 return new TestPointReader._(object);
214 }
215 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698