| Index: third_party/WebKit/LayoutTests/mojo/codec.html
|
| diff --git a/third_party/WebKit/LayoutTests/mojo/codec.html b/third_party/WebKit/LayoutTests/mojo/codec.html
|
| index a02ea1ef5f84ee98f96aae0271b42181f62f8926..9390069bb40836f885393fb2cc81affac5a5e996 100644
|
| --- a/third_party/WebKit/LayoutTests/mojo/codec.html
|
| +++ b/third_party/WebKit/LayoutTests/mojo/codec.html
|
| @@ -2,312 +2,303 @@
|
| <script src="../resources/testharness.js"></script>
|
| <script src="../resources/testharnessreport.js"></script>
|
| <script src="../resources/testharness-helpers.js"></script>
|
| -<script src="../resources/mojo-helpers.js"></script>
|
| +<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
|
| +<script src="file:///gen/mojo/public/interfaces/bindings/tests/sample_service.mojom.js"></script>
|
| +<script src="file:///gen/mojo/public/interfaces/bindings/tests/test_structs.mojom.js"></script>
|
| <script>
|
| 'use strict';
|
|
|
| -setup({ explicit_done: true });
|
| -
|
| -define([
|
| - 'mojo/public/js/codec',
|
| - 'mojo/public/interfaces/bindings/tests/rect.mojom',
|
| - 'mojo/public/interfaces/bindings/tests/sample_service.mojom',
|
| - 'mojo/public/interfaces/bindings/tests/test_structs.mojom',
|
| -], function(codec, rect, sample, structs) {
|
| -
|
| - test(() => {
|
| - var bar = new sample.Bar();
|
| - bar.alpha = 1;
|
| - bar.beta = 2;
|
| - bar.gamma = 3;
|
| - bar.type = 0x08070605;
|
| - bar.extraProperty = "banana";
|
| +test(() => {
|
| + var bar = new sample.Bar();
|
| + bar.alpha = 1;
|
| + bar.beta = 2;
|
| + bar.gamma = 3;
|
| + bar.type = 0x08070605;
|
| + bar.extraProperty = "banana";
|
| +
|
| + var messageName = 42;
|
| + var payloadSize = sample.Bar.encodedSize;
|
| +
|
| + var builder = new mojo.internal.MessageV0Builder(messageName, payloadSize);
|
| + builder.encodeStruct(sample.Bar, bar);
|
| +
|
| + var message = builder.finish();
|
| +
|
| + var expectedMemory = new Uint8Array([
|
| + 24, 0, 0, 0,
|
| + 0, 0, 0, 0,
|
| + 0, 0, 0, 0,
|
| + 42, 0, 0, 0,
|
| + 0, 0, 0, 0,
|
| + 0, 0, 0, 0,
|
| +
|
| + 16, 0, 0, 0,
|
| + 0, 0, 0, 0,
|
| +
|
| + 1, 2, 3, 0,
|
| + 5, 6, 7, 8,
|
| + ]);
|
| +
|
| + var actualMemory = new Uint8Array(message.buffer.arrayBuffer);
|
| + assert_weak_equals(actualMemory, expectedMemory);
|
| +
|
| + var reader = new mojo.internal.MessageReader(message);
|
| +
|
| + assert_equals(reader.payloadSize, payloadSize);
|
| + assert_equals(reader.messageName, messageName);
|
| +
|
| + var bar2 = reader.decodeStruct(sample.Bar);
|
| +
|
| + assert_equals(bar2.alpha, bar.alpha);
|
| + assert_equals(bar2.beta, bar.beta);
|
| + assert_equals(bar2.gamma, bar.gamma);
|
| + assert_false("extraProperty" in bar2);
|
| +}, 'bar');
|
| +
|
| +test(() => {
|
| + var foo = new sample.Foo();
|
| + foo.x = 0x212B4D5;
|
| + foo.y = 0x16E93;
|
| + foo.a = 1;
|
| + foo.b = 0;
|
| + foo.c = 3; // This will get truncated to one bit.
|
| + foo.bar = new sample.Bar();
|
| + foo.bar.alpha = 91;
|
| + foo.bar.beta = 82;
|
| + foo.bar.gamma = 73;
|
| + foo.data = [
|
| + 4, 5, 6, 7, 8,
|
| + ];
|
| + foo.extraBars = [
|
| + new sample.Bar(), new sample.Bar(), new sample.Bar(),
|
| + ];
|
| + for (var i = 0; i < foo.extraBars.length; ++i) {
|
| + foo.extraBars[i].alpha = 1 * i;
|
| + foo.extraBars[i].beta = 2 * i;
|
| + foo.extraBars[i].gamma = 3 * i;
|
| + }
|
| + foo.name = "I am a banana";
|
| + // This is supposed to be a handle, but we fake it with an integer.
|
| + foo.source = 23423782;
|
| + foo.arrayOfArrayOfBools = [
|
| + [true], [false, true]
|
| + ];
|
| + foo.arrayOfBools = [
|
| + true, false, true, false, true, false, true, true
|
| + ];
|
| +
|
| +
|
| + var messageName = 31;
|
| + var payloadSize = 304;
|
| +
|
| + var builder = new mojo.internal.MessageV0Builder(messageName, payloadSize);
|
| + builder.encodeStruct(sample.Foo, foo);
|
| +
|
| + var message = builder.finish();
|
| +
|
| + var expectedMemory = new Uint8Array([
|
| + /* 0: */ 24, 0, 0, 0, 0, 0, 0, 0,
|
| + /* 8: */ 0, 0, 0, 0, 31, 0, 0, 0,
|
| + /* 16: */ 0, 0, 0, 0, 0, 0, 0, 0,
|
| + /* 24: */ 96, 0, 0, 0, 0, 0, 0, 0,
|
| + /* 32: */ 0xD5, 0xB4, 0x12, 0x02, 0x93, 0x6E, 0x01, 0,
|
| + /* 40: */ 5, 0, 0, 0, 0, 0, 0, 0,
|
| + /* 48: */ 72, 0, 0, 0, 0, 0, 0, 0,
|
| + ]);
|
| + // TODO(abarth): Test more of the message's raw memory.
|
| + var actualMemory = new Uint8Array(message.buffer.arrayBuffer,
|
| + 0, expectedMemory.length);
|
| + assert_weak_equals(actualMemory, expectedMemory);
|
| +
|
| + var expectedHandles = [
|
| + 23423782,
|
| + ];
|
| +
|
| + assert_weak_equals(message.handles, expectedHandles);
|
| +
|
| + var reader = new mojo.internal.MessageReader(message);
|
| +
|
| + assert_equals(reader.payloadSize, payloadSize);
|
| + assert_equals(reader.messageName, messageName);
|
| +
|
| + var foo2 = reader.decodeStruct(sample.Foo);
|
| +
|
| + assert_equals(foo2.x, foo.x);
|
| + assert_equals(foo2.y, foo.y);
|
| +
|
| + assert_equals(foo2.a, foo.a & 1 ? true : false);
|
| + assert_equals(foo2.b, foo.b & 1 ? true : false);
|
| + assert_equals(foo2.c, foo.c & 1 ? true : false);
|
| +
|
| + assert_weak_equals(foo2.bar, foo.bar);
|
| + assert_weak_equals(foo2.data, foo.data);
|
| +
|
| + assert_weak_equals(foo2.extraBars, foo.extraBars);
|
| + assert_equals(foo2.name, foo.name);
|
| + assert_equals(foo2.source, foo.source);
|
| +
|
| + assert_weak_equals(foo2.arrayOfBools, foo.arrayOfBools);
|
| +}, 'foo');
|
| +
|
| +
|
| +// Verify that the references to the imported Rect type in test_structs.mojom
|
| +// are generated correctly.
|
| +test(() => {
|
| +
|
| + function createRect(x, y, width, height) {
|
| + var r = new mojo.test.Rect();
|
| + r.x = x;
|
| + r.y = y;
|
| + r.width = width;
|
| + r.height = height;
|
| + return r;
|
| + }
|
| +
|
| + var r = new mojo.test.NamedRegion();
|
| + r.name = "rectangle";
|
| + r.rects = new Array(createRect(1, 2, 3, 4), createRect(10, 20, 30, 40));
|
| +
|
| + var builder = new mojo.internal.MessageV0Builder(
|
| + 1, mojo.test.NamedRegion.encodedSize);
|
| + builder.encodeStruct(mojo.test.NamedRegion, r);
|
| + var reader = new mojo.internal.MessageReader(builder.finish());
|
| + var result = reader.decodeStruct(mojo.test.NamedRegion);
|
| +
|
| + assert_equals(result.name, "rectangle");
|
| + assert_weak_equals(result.rects[0], createRect(1, 2, 3, 4));
|
| + assert_weak_equals(result.rects[1], createRect(10, 20, 30, 40));
|
| +}, 'named region');
|
| +
|
| +// Verify that a single boolean field in a struct is correctly decoded to
|
| +// boolean type.
|
| +test(() => {
|
| + var singleBool = new mojo.test.SingleBoolStruct();
|
| + singleBool.value = true;
|
| +
|
| + var builder = new mojo.internal.MessageV0Builder(
|
| + 1, mojo.test.SingleBoolStruct.encodedSize);
|
| + builder.encodeStruct(mojo.test.SingleBoolStruct, singleBool);
|
| + var reader = new mojo.internal.MessageReader(builder.finish());
|
| + var result = reader.decodeStruct(mojo.test.SingleBoolStruct);
|
| +
|
| + assert_true(result.value);
|
| +}, 'single boolean struct');
|
|
|
| +test(() => {
|
| + function encodeDecode(cls, input, expectedResult, encodedSize) {
|
| var messageName = 42;
|
| - var payloadSize = sample.Bar.encodedSize;
|
| -
|
| - var builder = new codec.MessageV0Builder(messageName, payloadSize);
|
| - builder.encodeStruct(sample.Bar, bar);
|
| + var payloadSize = encodedSize || cls.encodedSize;
|
|
|
| + var builder = new mojo.internal.MessageV0Builder(messageName, payloadSize);
|
| + builder.encodeStruct(cls, input)
|
| var message = builder.finish();
|
|
|
| - var expectedMemory = new Uint8Array([
|
| - 24, 0, 0, 0,
|
| - 0, 0, 0, 0,
|
| - 0, 0, 0, 0,
|
| - 42, 0, 0, 0,
|
| - 0, 0, 0, 0,
|
| - 0, 0, 0, 0,
|
| -
|
| - 16, 0, 0, 0,
|
| - 0, 0, 0, 0,
|
| -
|
| - 1, 2, 3, 0,
|
| - 5, 6, 7, 8,
|
| - ]);
|
| -
|
| - var actualMemory = new Uint8Array(message.buffer.arrayBuffer);
|
| - assert_weak_equals(actualMemory, expectedMemory);
|
| -
|
| - var reader = new codec.MessageReader(message);
|
| -
|
| + var reader = new mojo.internal.MessageReader(message);
|
| assert_equals(reader.payloadSize, payloadSize);
|
| assert_equals(reader.messageName, messageName);
|
| -
|
| - var bar2 = reader.decodeStruct(sample.Bar);
|
| -
|
| - assert_equals(bar2.alpha, bar.alpha);
|
| - assert_equals(bar2.beta, bar.beta);
|
| - assert_equals(bar2.gamma, bar.gamma);
|
| - assert_false("extraProperty" in bar2);
|
| - }, 'bar');
|
| -
|
| - test(() => {
|
| - var foo = new sample.Foo();
|
| - foo.x = 0x212B4D5;
|
| - foo.y = 0x16E93;
|
| - foo.a = 1;
|
| - foo.b = 0;
|
| - foo.c = 3; // This will get truncated to one bit.
|
| - foo.bar = new sample.Bar();
|
| - foo.bar.alpha = 91;
|
| - foo.bar.beta = 82;
|
| - foo.bar.gamma = 73;
|
| - foo.data = [
|
| - 4, 5, 6, 7, 8,
|
| - ];
|
| - foo.extra_bars = [
|
| - new sample.Bar(), new sample.Bar(), new sample.Bar(),
|
| - ];
|
| - for (var i = 0; i < foo.extra_bars.length; ++i) {
|
| - foo.extra_bars[i].alpha = 1 * i;
|
| - foo.extra_bars[i].beta = 2 * i;
|
| - foo.extra_bars[i].gamma = 3 * i;
|
| - }
|
| - foo.name = "I am a banana";
|
| - // This is supposed to be a handle, but we fake it with an integer.
|
| - foo.source = 23423782;
|
| - foo.array_of_array_of_bools = [
|
| - [true], [false, true]
|
| - ];
|
| - foo.array_of_bools = [
|
| - true, false, true, false, true, false, true, true
|
| - ];
|
| -
|
| -
|
| - var messageName = 31;
|
| - var payloadSize = 304;
|
| -
|
| - var builder = new codec.MessageV0Builder(messageName, payloadSize);
|
| - builder.encodeStruct(sample.Foo, foo);
|
| -
|
| - var message = builder.finish();
|
| -
|
| - var expectedMemory = new Uint8Array([
|
| - /* 0: */ 24, 0, 0, 0, 0, 0, 0, 0,
|
| - /* 8: */ 0, 0, 0, 0, 31, 0, 0, 0,
|
| - /* 16: */ 0, 0, 0, 0, 0, 0, 0, 0,
|
| - /* 24: */ 96, 0, 0, 0, 0, 0, 0, 0,
|
| - /* 32: */ 0xD5, 0xB4, 0x12, 0x02, 0x93, 0x6E, 0x01, 0,
|
| - /* 40: */ 5, 0, 0, 0, 0, 0, 0, 0,
|
| - /* 48: */ 72, 0, 0, 0, 0, 0, 0, 0,
|
| - ]);
|
| - // TODO(abarth): Test more of the message's raw memory.
|
| - var actualMemory = new Uint8Array(message.buffer.arrayBuffer,
|
| - 0, expectedMemory.length);
|
| - assert_weak_equals(actualMemory, expectedMemory);
|
| -
|
| - var expectedHandles = [
|
| - 23423782,
|
| - ];
|
| -
|
| - assert_weak_equals(message.handles, expectedHandles);
|
| -
|
| - var reader = new codec.MessageReader(message);
|
| -
|
| - assert_equals(reader.payloadSize, payloadSize);
|
| - assert_equals(reader.messageName, messageName);
|
| -
|
| - var foo2 = reader.decodeStruct(sample.Foo);
|
| -
|
| - assert_equals(foo2.x, foo.x);
|
| - assert_equals(foo2.y, foo.y);
|
| -
|
| - assert_equals(foo2.a, foo.a & 1 ? true : false);
|
| - assert_equals(foo2.b, foo.b & 1 ? true : false);
|
| - assert_equals(foo2.c, foo.c & 1 ? true : false);
|
| -
|
| - assert_weak_equals(foo2.bar, foo.bar);
|
| - assert_weak_equals(foo2.data, foo.data);
|
| -
|
| - assert_weak_equals(foo2.extra_bars, foo.extra_bars);
|
| - assert_equals(foo2.name, foo.name);
|
| - assert_equals(foo2.source, foo.source);
|
| -
|
| - assert_weak_equals(foo2.array_of_bools, foo.array_of_bools);
|
| - }, 'foo');
|
| -
|
| -
|
| - // Verify that the references to the imported Rect type in test_structs.mojom
|
| - // are generated correctly.
|
| - test(() => {
|
| -
|
| - function createRect(x, y, width, height) {
|
| - var r = new rect.Rect();
|
| - r.x = x;
|
| - r.y = y;
|
| - r.width = width;
|
| - r.height = height;
|
| - return r;
|
| - }
|
| -
|
| - var r = new structs.NamedRegion();
|
| - r.name = "rectangle";
|
| - r.rects = new Array(createRect(1, 2, 3, 4), createRect(10, 20, 30, 40));
|
| -
|
| - var builder = new codec.MessageV0Builder(1, structs.NamedRegion.encodedSize);
|
| - builder.encodeStruct(structs.NamedRegion, r);
|
| - var reader = new codec.MessageReader(builder.finish());
|
| - var result = reader.decodeStruct(structs.NamedRegion);
|
| -
|
| - assert_equals(result.name, "rectangle");
|
| - assert_weak_equals(result.rects[0], createRect(1, 2, 3, 4));
|
| - assert_weak_equals(result.rects[1], createRect(10, 20, 30, 40));
|
| - }, 'named region');
|
| -
|
| - // Verify that a single boolean field in a struct is correctly decoded to
|
| - // boolean type.
|
| - test(() => {
|
| - var single_bool = new structs.SingleBoolStruct();
|
| - single_bool.value = true;
|
| -
|
| - var builder = new codec.MessageV0Builder(
|
| - 1, structs.SingleBoolStruct.encodedSize);
|
| - builder.encodeStruct(structs.SingleBoolStruct, single_bool);
|
| - var reader = new codec.MessageReader(builder.finish());
|
| - var result = reader.decodeStruct(structs.SingleBoolStruct);
|
| -
|
| - assert_true(result.value);
|
| - }, 'single boolean struct');
|
| -
|
| - test(() => {
|
| - function encodeDecode(cls, input, expectedResult, encodedSize) {
|
| - var messageName = 42;
|
| - var payloadSize = encodedSize || cls.encodedSize;
|
| -
|
| - var builder = new codec.MessageV0Builder(messageName, payloadSize);
|
| - builder.encodeStruct(cls, input)
|
| - var message = builder.finish();
|
| -
|
| - var reader = new codec.MessageReader(message);
|
| - assert_equals(reader.payloadSize, payloadSize);
|
| - assert_equals(reader.messageName, messageName);
|
| - var result = reader.decodeStruct(cls);
|
| - assert_equals(result, expectedResult);
|
| - }
|
| - encodeDecode(codec.String, "banana", "banana", 24);
|
| - encodeDecode(codec.NullableString, null, null, 8);
|
| - encodeDecode(codec.Int8, -1, -1);
|
| - encodeDecode(codec.Int8, 0xff, -1);
|
| - encodeDecode(codec.Int16, -1, -1);
|
| - encodeDecode(codec.Int16, 0xff, 0xff);
|
| - encodeDecode(codec.Int16, 0xffff, -1);
|
| - encodeDecode(codec.Int32, -1, -1);
|
| - encodeDecode(codec.Int32, 0xffff, 0xffff);
|
| - encodeDecode(codec.Int32, 0xffffffff, -1);
|
| - encodeDecode(codec.Float, 1.0, 1.0);
|
| - encodeDecode(codec.Double, 1.0, 1.0);
|
| - }, 'types');
|
| -
|
| - test(() => {
|
| - var aligned = [
|
| - 0, // 0
|
| - 8, // 1
|
| - 8, // 2
|
| - 8, // 3
|
| - 8, // 4
|
| - 8, // 5
|
| - 8, // 6
|
| - 8, // 7
|
| - 8, // 8
|
| - 16, // 9
|
| - 16, // 10
|
| - 16, // 11
|
| - 16, // 12
|
| - 16, // 13
|
| - 16, // 14
|
| - 16, // 15
|
| - 16, // 16
|
| - 24, // 17
|
| - 24, // 18
|
| - 24, // 19
|
| - 24, // 20
|
| - ];
|
| - for (var i = 0; i < aligned.length; ++i)
|
| - assert_equals(codec.align(i), aligned[i]);
|
| -
|
| - }, 'align');
|
| -
|
| - test(() => {
|
| - var str = "B\u03ba\u1f79"; // some UCS-2 codepoints
|
| - var messageName = 42;
|
| - var payloadSize = 24;
|
| -
|
| - var builder = new codec.MessageV0Builder(messageName, payloadSize);
|
| - var encoder = builder.createEncoder(8);
|
| - encoder.encodeStringPointer(str);
|
| - var message = builder.finish();
|
| - var expectedMemory = new Uint8Array([
|
| - /* 0: */ 24, 0, 0, 0, 0, 0, 0, 0,
|
| - /* 8: */ 0, 0, 0, 0, 42, 0, 0, 0,
|
| - /* 16: */ 0, 0, 0, 0, 0, 0, 0, 0,
|
| - /* 24: */ 8, 0, 0, 0, 0, 0, 0, 0,
|
| - /* 32: */ 14, 0, 0, 0, 6, 0, 0, 0,
|
| - /* 40: */ 0x42, 0xCE, 0xBA, 0xE1, 0xBD, 0xB9, 0, 0,
|
| - ]);
|
| - var actualMemory = new Uint8Array(message.buffer.arrayBuffer);
|
| - assert_weak_equals(actualMemory, expectedMemory);
|
| -
|
| - var reader = new codec.MessageReader(message);
|
| - assert_equals(reader.payloadSize, payloadSize);
|
| - assert_equals(reader.messageName, messageName);
|
| - var str2 = reader.decoder.decodeStringPointer();
|
| - assert_equals(str2, str);
|
| - }, 'utf8');
|
| -
|
| - test(() => {
|
| - var encoder = new codec.MessageV0Builder(42, 24).createEncoder(8);
|
| - function DummyClass() {};
|
| - var testCases = [
|
| - // method, args, invalid examples, valid examples
|
| - [encoder.encodeArrayPointer, [DummyClass], [75],
|
| - [[], null, undefined, new Uint8Array([])]],
|
| - [encoder.encodeStringPointer, [], [75, new String("foo")],
|
| - ["", "bar", null, undefined]],
|
| - [encoder.encodeMapPointer, [DummyClass, DummyClass], [75],
|
| - [new Map(), null, undefined]],
|
| - ];
|
| -
|
| - testCases.forEach(function(test) {
|
| - var method = test[0];
|
| - var baseArgs = test[1];
|
| - var invalidExamples = test[2];
|
| - var validExamples = test[3];
|
| -
|
| - var encoder = new codec.MessageV0Builder(42, 24).createEncoder(8);
|
| - invalidExamples.forEach(function(invalid) {
|
| - assert_throws(null, function() {
|
| - method.apply(encoder, baseArgs.concat(invalid));
|
| - });
|
| - });
|
| -
|
| - validExamples.forEach(function(valid) {
|
| - var encoder = new codec.MessageV0Builder(42, 24).createEncoder(8);
|
| - method.apply(encoder, baseArgs.concat(valid));
|
| + var result = reader.decodeStruct(cls);
|
| + assert_equals(result, expectedResult);
|
| + }
|
| + encodeDecode(mojo.internal.String, "banana", "banana", 24);
|
| + encodeDecode(mojo.internal.NullableString, null, null, 8);
|
| + encodeDecode(mojo.internal.Int8, -1, -1);
|
| + encodeDecode(mojo.internal.Int8, 0xff, -1);
|
| + encodeDecode(mojo.internal.Int16, -1, -1);
|
| + encodeDecode(mojo.internal.Int16, 0xff, 0xff);
|
| + encodeDecode(mojo.internal.Int16, 0xffff, -1);
|
| + encodeDecode(mojo.internal.Int32, -1, -1);
|
| + encodeDecode(mojo.internal.Int32, 0xffff, 0xffff);
|
| + encodeDecode(mojo.internal.Int32, 0xffffffff, -1);
|
| + encodeDecode(mojo.internal.Float, 1.0, 1.0);
|
| + encodeDecode(mojo.internal.Double, 1.0, 1.0);
|
| +}, 'types');
|
| +
|
| +test(() => {
|
| + var aligned = [
|
| + 0, // 0
|
| + 8, // 1
|
| + 8, // 2
|
| + 8, // 3
|
| + 8, // 4
|
| + 8, // 5
|
| + 8, // 6
|
| + 8, // 7
|
| + 8, // 8
|
| + 16, // 9
|
| + 16, // 10
|
| + 16, // 11
|
| + 16, // 12
|
| + 16, // 13
|
| + 16, // 14
|
| + 16, // 15
|
| + 16, // 16
|
| + 24, // 17
|
| + 24, // 18
|
| + 24, // 19
|
| + 24, // 20
|
| + ];
|
| + for (var i = 0; i < aligned.length; ++i)
|
| + assert_equals(mojo.internal.align(i), aligned[i]);
|
| +
|
| +}, 'align');
|
| +
|
| +test(() => {
|
| + var str = "B\u03ba\u1f79"; // some UCS-2 codepoints
|
| + var messageName = 42;
|
| + var payloadSize = 24;
|
| +
|
| + var builder = new mojo.internal.MessageV0Builder(messageName, payloadSize);
|
| + var encoder = builder.createEncoder(8);
|
| + encoder.encodeStringPointer(str);
|
| + var message = builder.finish();
|
| + var expectedMemory = new Uint8Array([
|
| + /* 0: */ 24, 0, 0, 0, 0, 0, 0, 0,
|
| + /* 8: */ 0, 0, 0, 0, 42, 0, 0, 0,
|
| + /* 16: */ 0, 0, 0, 0, 0, 0, 0, 0,
|
| + /* 24: */ 8, 0, 0, 0, 0, 0, 0, 0,
|
| + /* 32: */ 14, 0, 0, 0, 6, 0, 0, 0,
|
| + /* 40: */ 0x42, 0xCE, 0xBA, 0xE1, 0xBD, 0xB9, 0, 0,
|
| + ]);
|
| + var actualMemory = new Uint8Array(message.buffer.arrayBuffer);
|
| + assert_weak_equals(actualMemory, expectedMemory);
|
| +
|
| + var reader = new mojo.internal.MessageReader(message);
|
| + assert_equals(reader.payloadSize, payloadSize);
|
| + assert_equals(reader.messageName, messageName);
|
| + var str2 = reader.decoder.decodeStringPointer();
|
| + assert_equals(str2, str);
|
| +}, 'utf8');
|
| +
|
| +test(() => {
|
| + var encoder = new mojo.internal.MessageV0Builder(42, 24).createEncoder(8);
|
| + function DummyClass() {};
|
| + var testCases = [
|
| + // method, args, invalid examples, valid examples
|
| + [encoder.encodeArrayPointer, [DummyClass], [75],
|
| + [[], null, undefined, new Uint8Array([])]],
|
| + [encoder.encodeStringPointer, [], [75, new String("foo")],
|
| + ["", "bar", null, undefined]],
|
| + [encoder.encodeMapPointer, [DummyClass, DummyClass], [75],
|
| + [new Map(), null, undefined]],
|
| + ];
|
| +
|
| + testCases.forEach(function(test) {
|
| + var method = test[0];
|
| + var baseArgs = test[1];
|
| + var invalidExamples = test[2];
|
| + var validExamples = test[3];
|
| +
|
| + var encoder = new mojo.internal.MessageV0Builder(42, 24).createEncoder(8);
|
| + invalidExamples.forEach(function(invalid) {
|
| + assert_throws(null, function() {
|
| + method.apply(encoder, baseArgs.concat(invalid));
|
| });
|
| });
|
| - }, 'typed pointer validation');
|
|
|
| - done();
|
| -});
|
| + validExamples.forEach(function(valid) {
|
| + var encoder = new mojo.internal.MessageV0Builder(42, 24).createEncoder(8);
|
| + method.apply(encoder, baseArgs.concat(valid));
|
| + });
|
| + });
|
| +}, 'typed pointer validation');
|
| </script>
|
|
|