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

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: Rewrite using backward construction approach. 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 // 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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698