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

Side by Side Diff: third_party/WebKit/LayoutTests/mojo/union.html

Issue 2891193002: Mojo JS bindings: switch all mojo/ layout tests to use the new mode. (Closed)
Patch Set: . Created 3 years, 7 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
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <script src="../resources/testharness.js"></script> 2 <script src="../resources/testharness.js"></script>
3 <script src="../resources/testharnessreport.js"></script> 3 <script src="../resources/testharnessreport.js"></script>
4 <script src="../resources/testharness-helpers.js"></script> 4 <script src="../resources/testharness-helpers.js"></script>
5 <script src="../resources/mojo-helpers.js"></script> 5 <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></scr ipt>
6 <script src="file:///gen/mojo/public/interfaces/bindings/tests/test_unions.mojom .js"></script>
6 <script> 7 <script>
7 'use strict'; 8 'use strict';
8 9
9 setup({ explicit_done: true }); 10 test(() => {
11 var u = new mojo.test.PodUnion();
12 assert_equals(u.$data, null);
13 assert_equals(u.$tag, undefined);
10 14
11 define([ 15 u.fUint32 = 32;
12 'mojo/public/interfaces/bindings/tests/test_unions.mojom',
13 'mojo/public/js/codec',
14 'mojo/public/js/validator',
15 ], function(unions, codec, validator) {
16 16
17 test(() => { 17 assert_equals(u.fUint32, 32);
18 var u = new unions.PodUnion(); 18 assert_equals(u.$tag, mojo.test.PodUnion.Tags.fUint32);
19 assert_equals(u.$data, null);
20 assert_equals(u.$tag, undefined);
21 19
22 u.f_uint32 = 32; 20 var u = new mojo.test.PodUnion({fUint64: 64});
21 assert_equals(u.fUint64, 64);
22 assert_equals(u.$tag, mojo.test.PodUnion.Tags.fUint64);
23 assert_throws(null, function() {var v = u.fUint32;});
23 24
24 assert_equals(u.f_uint32, 32); 25 assert_throws(null, function() {
25 assert_equals(u.$tag, unions.PodUnion.Tags.f_uint32); 26 var u = new mojo.test.PodUnion({
27 fUint64: 64,
28 fUint32: 32,
29 });
30 });
26 31
27 var u = new unions.PodUnion({f_uint64: 64}); 32 assert_throws(null, function() {
28 assert_equals(u.f_uint64, 64); 33 var u = new mojo.test.PodUnion({ foo: 64 });
29 assert_equals(u.$tag, unions.PodUnion.Tags.f_uint64); 34 });
30 assert_throws(null, function() {var v = u.f_uint32;});
31 35
32 assert_throws(null, function() { 36 assert_throws(null, function() {
33 var u = new unions.PodUnion({ 37 var u = new mojo.test.PodUnion([1,2,3,4]);
34 f_uint64: 64, 38 });
35 f_uint32: 32, 39 }, 'constructors');
36 });
37 });
38 40
39 assert_throws(null, function() { 41 function structEncodeDecode(struct) {
40 var u = new unions.PodUnion({ foo: 64 }); 42 var structClass = struct.constructor;
41 }); 43 var builder = new mojo.internal.MessageV0Builder(1234,
44 structClass.encodedSize);
45 builder.encodeStruct(structClass, struct);
42 46
43 assert_throws(null, function() { 47 var message = builder.finish();
44 var u = new unions.PodUnion([1,2,3,4]);
45 });
46 }, 'constructors');
47 48
48 function structEncodeDecode(struct) { 49 var messageValidator = new mojo.internal.Validator(message);
49 var structClass = struct.constructor; 50 var err = structClass.validate(messageValidator,
50 var builder = new codec.MessageV0Builder(1234, structClass.encodedSize); 51 mojo.internal.kMessageV0HeaderSize);
51 builder.encodeStruct(structClass, struct); 52 assert_equals(err, mojo.internal.validationError.NONE);
52 53
53 var message = builder.finish(); 54 var reader = new mojo.internal.MessageReader(message);
55 var view = reader.decoder.buffer.dataView;
54 56
55 var messageValidator = new validator.Validator(message); 57 return reader.decodeStruct(structClass);
56 var err = structClass.validate(messageValidator, codec.kMessageV0HeaderSize) ; 58 }
57 assert_equals(err, validator.validationError.NONE);
58 59
59 var reader = new codec.MessageReader(message); 60 test(() => {
60 var view = reader.decoder.buffer.dataView; 61 var s = new mojo.test.WrapperStruct({
62 podUnion: new mojo.test.PodUnion({fUint64: 64})
63 });
61 64
62 return reader.decodeStruct(structClass); 65 var decoded = structEncodeDecode(s);
63 } 66 assert_weak_equals(decoded, s);
64 67
65 test(() => { 68 var s = new mojo.test.WrapperStruct({
66 var s = new unions.WrapperStruct({ 69 podUnion: new mojo.test.PodUnion({fBool : true})
67 pod_union: new unions.PodUnion({ 70 });
68 f_uint64: 64})});
69 71
70 var decoded = structEncodeDecode(s); 72 var decoded = structEncodeDecode(s);
71 assert_weak_equals(decoded, s); 73 assert_equals(decoded.podUnion.$tag, mojo.test.PodUnion.Tags.fBool);
74 assert_true(decoded.podUnion.fBool);
72 75
73 var s = new unions.WrapperStruct({ 76 var s = new mojo.test.WrapperStruct({
74 pod_union: new unions.PodUnion({ 77 objectUnion: new mojo.test.ObjectUnion({
75 f_bool : true})}); 78 fDummy: new mojo.test.DummyStruct({fInt8: 8})
79 })
80 });
76 81
77 var decoded = structEncodeDecode(s); 82 var decoded = structEncodeDecode(s);
78 assert_equals(decoded.pod_union.$tag, unions.PodUnion.Tags.f_bool); 83 assert_weak_equals(decoded, s);
79 assert_true(decoded.pod_union.f_bool);
80 84
81 var s = new unions.WrapperStruct({ 85 var s = new mojo.test.WrapperStruct({
82 object_union: new unions.ObjectUnion({ 86 objectUnion: new mojo.test.ObjectUnion({fArrayInt8: [1, 2, 3]})
83 f_dummy: new unions.DummyStruct({ 87 });
84 f_int8: 8})})});
85 88
86 var decoded = structEncodeDecode(s); 89 var decoded = structEncodeDecode(s);
87 assert_weak_equals(decoded, s); 90 assert_weak_equals(decoded, s);
88 91
89 var s = new unions.WrapperStruct({ 92 var s = new mojo.test.WrapperStruct({
90 object_union: new unions.ObjectUnion({ 93 objectUnion: new mojo.test.ObjectUnion({
91 f_array_int8: [1, 2, 3]})}); 94 fMapInt8: new Map([
95 ["first", 1],
96 ["second", 2],
97 ])
98 })
99 });
92 100
93 var decoded = structEncodeDecode(s); 101 var decoded = structEncodeDecode(s);
94 assert_weak_equals(decoded, s); 102 assert_weak_equals(decoded, s);
95 103
96 var s = new unions.WrapperStruct({ 104 // Encoding a union with no member set is an error.
97 object_union: new unions.ObjectUnion({ 105 var s = new mojo.test.WrapperStruct({
98 f_map_int8: new Map([ 106 objectUnion: new mojo.test.ObjectUnion()});
99 ["first", 1], 107 assert_throws(null, function() {
100 ["second", 2], 108 structEncodeDecode(s);
101 ])})}); 109 });
110 }, 'basic encoding');
102 111
103 var decoded = structEncodeDecode(s); 112 test(() => {
104 assert_weak_equals(decoded, s); 113 var s = new mojo.test.SmallStruct({
114 podUnionArray: [
115 new mojo.test.PodUnion({fUint32: 32}),
116 new mojo.test.PodUnion({fUint64: 64}),
117 ]
118 });
105 119
106 // Encoding a union with no member set is an error. 120 var decoded = structEncodeDecode(s);
107 var s = new unions.WrapperStruct({ 121 assert_weak_equals(decoded, s);
108 object_union: new unions.ObjectUnion()}); 122 }, 'unions in array encoding');
109 assert_throws(null, function() {
110 structEncodeDecode(s);
111 });
112 }, 'basic encoding');
113 123
114 test(() => { 124 test(() => {
115 var s = new unions.SmallStruct({ 125 var s = new mojo.test.SmallStruct({
116 pod_union_array: [ 126 podUnionMap: new Map([
117 new unions.PodUnion({f_uint32: 32}), 127 ["thirty-two", new mojo.test.PodUnion({fUint32: 32})],
118 new unions.PodUnion({f_uint64: 64}), 128 ["sixty-four", new mojo.test.PodUnion({fUint64: 64})],
119 ] 129 ])
120 }); 130 });
121 131
122 var decoded = structEncodeDecode(s); 132 var decoded = structEncodeDecode(s);
123 assert_weak_equals(decoded, s); 133 assert_weak_equals(decoded, s);
124 }, 'unions in array encoding'); 134 }, 'unions in map encoding');
125 135
126 test(() => { 136 test(() => {
127 var s = new unions.SmallStruct({ 137 var s = new mojo.test.WrapperStruct({
128 pod_union_map: new Map([ 138 objectUnion: new mojo.test.ObjectUnion({
129 ["thirty-two", new unions.PodUnion({f_uint32: 32})], 139 fPodUnion: new mojo.test.PodUnion({fUint32: 32})
130 ["sixty-four", new unions.PodUnion({f_uint64: 64})], 140 })
131 ]) 141 });
132 }); 142 var decoded = structEncodeDecode(s);
143 assert_weak_equals(decoded, s);
144 }, 'nested unions encoding');
133 145
134 var decoded = structEncodeDecode(s); 146 function structValidate(struct) {
135 assert_weak_equals(decoded, s); 147 var structClass = struct.constructor;
136 }, 'unions in map encoding'); 148 var builder = new mojo.internal.MessageV0Builder(1234,
149 structClass.encodedSize);
150 builder.encodeStruct(structClass, struct);
137 151
138 test(() => { 152 var message = builder.finish();
139 var s = new unions.WrapperStruct({
140 object_union: new unions.ObjectUnion({
141 f_pod_union: new unions.PodUnion({f_uint32: 32})
142 })});
143 var decoded = structEncodeDecode(s);
144 assert_weak_equals(decoded, s);
145 }, 'nested unions encoding');
146 153
147 function structValidate(struct) { 154 var messageValidator = new mojo.internal.Validator(message);
148 var structClass = struct.constructor; 155 return structClass.validate(messageValidator,
149 var builder = new codec.MessageV0Builder(1234, structClass.encodedSize); 156 mojo.internal.kMessageV0HeaderSize);
150 builder.encodeStruct(structClass, struct); 157 }
151 158
152 var message = builder.finish(); 159 test(() => {
160 var s = new mojo.test.WrapperStruct({
161 objectUnion: new mojo.test.ObjectUnion({fDummy: null})
162 });
153 163
154 var messageValidator = new validator.Validator(message); 164 var err = structValidate(s);
155 return structClass.validate(messageValidator, codec.kMessageV0HeaderSize); 165 assert_equals(err, mojo.internal.validationError.UNEXPECTED_NULL_POINTER);
156 }
157 166
158 test(() => { 167 var s = new mojo.test.WrapperStruct({
159 var s = new unions.WrapperStruct({ 168 objectUnion: new mojo.test.ObjectUnion({fNullable: null})
160 object_union: new unions.ObjectUnion({ 169 });
161 f_dummy: null})});
162 170
163 var err = structValidate(s); 171 var err = structValidate(s);
164 assert_equals(err, validator.validationError.UNEXPECTED_NULL_POINTER); 172 assert_equals(err, mojo.internal.validationError.NONE);
173 }, 'null union member validation');
165 174
166 var s = new unions.WrapperStruct({ 175 test(() => {
167 object_union: new unions.ObjectUnion({ 176 var s = new mojo.test.SmallStructNonNullableUnion({podUnion: null});
168 f_nullable: null})});
169 177
170 var err = structValidate(s); 178 var err = structValidate(s);
171 assert_equals(err, validator.validationError.NONE); 179 assert_equals(err, mojo.internal.validationError.UNEXPECTED_NULL_UNION);
172 }, 'null union member validation');
173 180
174 test(() => { 181 var s = new mojo.test.WrapperStruct({
175 var s = new unions.SmallStructNonNullableUnion({ 182 objectUnion: new mojo.test.ObjectUnion({fPodUnion: null})
176 pod_union: null}); 183 });
177 184
178 var err = structValidate(s); 185 var err = structValidate(s);
179 assert_equals(err, validator.validationError.UNEXPECTED_NULL_UNION); 186 assert_equals(err, mojo.internal.validationError.UNEXPECTED_NULL_UNION);
187 }, 'null union validation');
180 188
181 var s = new unions.WrapperStruct({
182 object_union: new unions.ObjectUnion({
183 f_pod_union: null})
184 });
185
186 var err = structValidate(s);
187 assert_equals(err, validator.validationError.UNEXPECTED_NULL_UNION);
188 }, 'null union validation');
189
190 done();
191
192 });
193 </script> 189 </script>
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/mojo/struct.html ('k') | third_party/WebKit/LayoutTests/mojo/validation.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698