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

Side by Side Diff: mojo/public/js/union_unittests.js

Issue 2645873003: Cleanup mojo-js tests. (Closed)
Patch Set: more deps fixes Created 3 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
« no previous file with comments | « mojo/public/js/tests/validation_unittest.js ('k') | mojo/public/js/validation_unittests.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 define([
6 "gin/test/expect",
7 "mojo/public/interfaces/bindings/tests/test_unions.mojom",
8 "mojo/public/js/codec",
9 "mojo/public/js/validator",
10 ], function(expect,
11 unions,
12 codec,
13 validator) {
14 function testConstructors() {
15 var u = new unions.PodUnion();
16 expect(u.$data).toEqual(null);
17 expect(u.$tag).toBeUndefined();
18
19 u.f_uint32 = 32;
20
21 expect(u.f_uint32).toEqual(32);
22 expect(u.$tag).toEqual(unions.PodUnion.Tags.f_uint32);
23
24 var u = new unions.PodUnion({f_uint64: 64});
25 expect(u.f_uint64).toEqual(64);
26 expect(u.$tag).toEqual(unions.PodUnion.Tags.f_uint64);
27 expect(function() {var v = u.f_uint32;}).toThrow();
28
29 expect(function() {
30 var u = new unions.PodUnion({
31 f_uint64: 64,
32 f_uint32: 32,
33 });
34 }).toThrow();
35
36 expect(function() {
37 var u = new unions.PodUnion({ foo: 64 }); }).toThrow();
38
39 expect(function() {
40 var u = new unions.PodUnion([1,2,3,4]); }).toThrow();
41 }
42
43 function structEncodeDecode(struct) {
44 var structClass = struct.constructor;
45 var builder = new codec.MessageBuilder(1234, structClass.encodedSize);
46 builder.encodeStruct(structClass, struct);
47
48 var message = builder.finish();
49
50 var messageValidator = new validator.Validator(message);
51 var err = structClass.validate(messageValidator, codec.kMessageHeaderSize);
52 expect(err).toEqual(validator.validationError.NONE);
53
54 var reader = new codec.MessageReader(message);
55 var view = reader.decoder.buffer.dataView;
56
57 return reader.decodeStruct(structClass);
58 }
59
60 function testBasicEncoding() {
61 var s = new unions.WrapperStruct({
62 pod_union: new unions.PodUnion({
63 f_uint64: 64})});
64
65 var decoded = structEncodeDecode(s);
66 expect(decoded).toEqual(s);
67
68 var s = new unions.WrapperStruct({
69 pod_union: new unions.PodUnion({
70 f_bool : true})});
71
72 var decoded = structEncodeDecode(s);
73 expect(decoded.pod_union.$tag).toEqual(unions.PodUnion.Tags.f_bool);
74 // Use toEqual() instead of toBeTruthy() to make sure the field type is
75 // actually boolean.
76 expect(decoded.pod_union.f_bool).toEqual(true);
77
78 var s = new unions.WrapperStruct({
79 object_union: new unions.ObjectUnion({
80 f_dummy: new unions.DummyStruct({
81 f_int8: 8})})});
82
83 var decoded = structEncodeDecode(s);
84 expect(decoded).toEqual(s);
85
86 var s = new unions.WrapperStruct({
87 object_union: new unions.ObjectUnion({
88 f_array_int8: [1, 2, 3]})});
89
90 var decoded = structEncodeDecode(s);
91 expect(decoded).toEqual(s);
92
93 var s = new unions.WrapperStruct({
94 object_union: new unions.ObjectUnion({
95 f_map_int8: new Map([
96 ["first", 1],
97 ["second", 2],
98 ])})});
99
100 var decoded = structEncodeDecode(s);
101 expect(decoded).toEqual(s);
102
103 // Encoding a union with no member set is an error.
104 var s = new unions.WrapperStruct({
105 object_union: new unions.ObjectUnion()});
106 expect(function() {
107 structEncodeDecode(s); }).toThrow();
108 }
109
110 function testUnionsInArrayEncoding() {
111 var s = new unions.SmallStruct({
112 pod_union_array: [
113 new unions.PodUnion({f_uint32: 32}),
114 new unions.PodUnion({f_uint64: 64}),
115 ]
116 });
117
118 var decoded = structEncodeDecode(s);
119 expect(decoded).toEqual(s);
120 }
121
122 function testUnionsInMapEncoding() {
123 var s = new unions.SmallStruct({
124 pod_union_map: new Map([
125 ["thirty-two", new unions.PodUnion({f_uint32: 32})],
126 ["sixty-four", new unions.PodUnion({f_uint64: 64})],
127 ])
128 });
129
130 var decoded = structEncodeDecode(s);
131 expect(decoded).toEqual(s);
132 }
133
134 function testNestedUnionsEncoding() {
135 var s = new unions.WrapperStruct({
136 object_union: new unions.ObjectUnion({
137 f_pod_union: new unions.PodUnion({f_uint32: 32})
138 })});
139 var decoded = structEncodeDecode(s);
140 expect(decoded).toEqual(s);
141 }
142
143 function structValidate(struct) {
144 var structClass = struct.constructor;
145 var builder = new codec.MessageBuilder(1234, structClass.encodedSize);
146 builder.encodeStruct(structClass, struct);
147
148 var message = builder.finish();
149
150 var messageValidator = new validator.Validator(message);
151 return structClass.validate(messageValidator, codec.kMessageHeaderSize);
152 }
153
154 function testNullUnionMemberValidation() {
155 var s = new unions.WrapperStruct({
156 object_union: new unions.ObjectUnion({
157 f_dummy: null})});
158
159 var err = structValidate(s);
160 expect(err).toEqual(validator.validationError.UNEXPECTED_NULL_POINTER);
161
162 var s = new unions.WrapperStruct({
163 object_union: new unions.ObjectUnion({
164 f_nullable: null})});
165
166 var err = structValidate(s);
167 expect(err).toEqual(validator.validationError.NONE);
168 }
169
170 function testNullUnionValidation() {
171 var s = new unions.SmallStructNonNullableUnion({
172 pod_union: null});
173
174 var err = structValidate(s);
175 expect(err).toEqual(validator.validationError.UNEXPECTED_NULL_UNION);
176
177 var s = new unions.WrapperStruct({
178 object_union: new unions.ObjectUnion({
179 f_pod_union: null})
180 });
181
182 var err = structValidate(s);
183 expect(err).toEqual(validator.validationError.UNEXPECTED_NULL_UNION);
184 }
185
186 testConstructors();
187 testBasicEncoding();
188 testUnionsInArrayEncoding();
189 testUnionsInMapEncoding();
190 testNestedUnionsEncoding();
191 testNullUnionMemberValidation();
192 testNullUnionValidation();
193 this.result = "PASS";
194 });
OLDNEW
« no previous file with comments | « mojo/public/js/tests/validation_unittest.js ('k') | mojo/public/js/validation_unittests.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698