| Index: mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java
|
| diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d7cef0a549ea72b51caf5441c2efa96cc759ec40
|
| --- /dev/null
|
| +++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java
|
| @@ -0,0 +1,131 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.mojo.bindings;
|
| +
|
| +import android.test.suitebuilder.annotation.SmallTest;
|
| +
|
| +import junit.framework.TestCase;
|
| +
|
| +import org.chromium.mojo.HandleMock;
|
| +import org.chromium.mojo.bindings.test.mojom.mojo.Struct1;
|
| +import org.chromium.mojo.bindings.test.mojom.mojo.Struct2;
|
| +import org.chromium.mojo.bindings.test.mojom.mojo.Struct3;
|
| +import org.chromium.mojo.bindings.test.mojom.mojo.Struct4;
|
| +import org.chromium.mojo.bindings.test.mojom.mojo.Struct5;
|
| +import org.chromium.mojo.bindings.test.mojom.mojo.Struct6;
|
| +import org.chromium.mojo.bindings.test.mojom.mojo.StructOfNullables;
|
| +
|
| +/**
|
| + * Tests for the serialization logic of the generated structs, using structs defined in
|
| + * mojo/public/interfaces/bindings/tests/serialization_test_structs.mojom .
|
| + */
|
| +public class SerializationTest extends TestCase {
|
| +
|
| + private static void assertThrowsSerializationException(Struct struct) {
|
| + try {
|
| + struct.serialize(null);
|
| + fail("Serialization of invalid struct should have thrown an exception.");
|
| + } catch (SerializationException ex) {
|
| + // Expected.
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * Verifies that serializing a struct with an invalid handle of a non-nullable type throws an
|
| + * exception.
|
| + */
|
| + @SmallTest
|
| + public void testHandle() {
|
| + Struct2 struct = new Struct2();
|
| + assertFalse(struct.hdl.isValid());
|
| + assertThrowsSerializationException(struct);
|
| +
|
| + // Make the struct valid and verify that it serializes without an exception.
|
| + struct.hdl = new HandleMock();
|
| + struct.serialize(null);
|
| + }
|
| +
|
| + /**
|
| + * Verifies that serializing a struct with a null struct pointer throws an exception.
|
| + */
|
| + @SmallTest
|
| + public void testStructPointer() {
|
| + Struct3 struct = new Struct3();
|
| + assertNull(struct.struct1);
|
| + assertThrowsSerializationException(struct);
|
| +
|
| + // Make the struct valid and verify that it serializes without an exception.
|
| + struct.struct1 = new Struct1();
|
| + struct.serialize(null);
|
| + }
|
| +
|
| + /**
|
| + * Verifies that serializing a struct with an array of structs throws an exception when the
|
| + * struct is invalid.
|
| + */
|
| + @SmallTest
|
| + public void testStructArray() {
|
| + Struct4 struct = new Struct4();
|
| + assertNull(struct.array);
|
| + assertThrowsSerializationException(struct);
|
| +
|
| + // Create the (1-element) array but have the element null.
|
| + struct.array = new Struct1[1];
|
| + assertThrowsSerializationException(struct);
|
| +
|
| + // Create the array element, struct should serialize now.
|
| + struct.array[0] = new Struct1();
|
| + struct.serialize(null);
|
| + }
|
| +
|
| + /**
|
| + * Verifies that serializing a struct with a fixed-size array of incorrect length throws an
|
| + * exception.
|
| + */
|
| + @SmallTest
|
| + public void testFixedSizeArray() {
|
| + Struct5 struct = new Struct5();
|
| + assertNull(struct.pair);
|
| + assertThrowsSerializationException(struct);
|
| +
|
| + // Create the (1-element) array, 2-element array is required.
|
| + struct.pair = new Struct1[1];
|
| + struct.pair[0] = new Struct1();
|
| + assertThrowsSerializationException(struct);
|
| +
|
| + // Create the array of a correct size, struct should serialize now.
|
| + struct.pair = new Struct1[2];
|
| + struct.pair[0] = new Struct1();
|
| + struct.pair[1] = new Struct1();
|
| + struct.serialize(null);
|
| + }
|
| +
|
| + /**
|
| + * Verifies that serializing a struct with a null string throws an exception.
|
| + */
|
| + @SmallTest
|
| + public void testString() {
|
| + Struct6 struct = new Struct6();
|
| + assertNull(struct.str);
|
| + assertThrowsSerializationException(struct);
|
| +
|
| + // Make the struct valid and verify that it serializes without an exception.
|
| + struct.str = "";
|
| + struct.serialize(null);
|
| + }
|
| +
|
| + /**
|
| + * Verifies that a struct with an invalid nullable handle, null nullable struct pointer and null
|
| + * nullable string serializes without an exception.
|
| + */
|
| + @SmallTest
|
| + public void testNullableFields() {
|
| + StructOfNullables struct = new StructOfNullables();
|
| + assertFalse(struct.hdl.isValid());
|
| + assertNull(struct.struct1);
|
| + assertNull(struct.str);
|
| + struct.serialize(null);
|
| + }
|
| +}
|
|
|