You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2019/01/14 03:18:22 UTC
[servicecomb-java-chassis] 16/16: [SCB-1071] update other test case
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit 41e843aadf787b538ef175ae02829da45003f104
Author: wujimin <wu...@huawei.com>
AuthorDate: Thu Jan 10 22:48:34 2019 +0800
[SCB-1071] update other test case
---
.../protobuf/internal/TestModelWrap.java | 132 ++++++---
.../protobuf/internal/TestSchemaBase.java | 56 +++-
.../internal/bean/TestBeanDescriptorManager.java | 28 +-
.../protobuf/internal/model/PrimitiveArrays.java | 301 +++++++++++++++++++++
.../internal/model/PrimitiveWrapperArrays.java | 301 +++++++++++++++++++++
.../foundation/protobuf/internal/model/User.java | 7 +
.../protobuf/internal/schema/TestAnySchema.java | 10 +-
.../internal/schema/TestMessageSchema.java | 2 +-
.../internal/schema/TestRepeatedSchema.java | 206 +++++++++++++-
9 files changed, 976 insertions(+), 67 deletions(-)
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/TestModelWrap.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/TestModelWrap.java
index 94937c2..26d447c 100644
--- a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/TestModelWrap.java
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/TestModelWrap.java
@@ -18,7 +18,7 @@ package org.apache.servicecomb.foundation.protobuf.internal;
import java.io.IOException;
import java.util.Arrays;
-import java.util.Collections;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -72,20 +72,43 @@ public class TestModelWrap {
public Map<String, Map<String, Map<String, User>>> mapMapMapUser;
public void init() {
- listListUser = Arrays.asList(Arrays.asList(user));
- listMapUser = Arrays.asList(Collections.singletonMap(user.name, user));
- mapListUser = Collections.singletonMap("k1", Arrays.asList(user));
- mapMapUser = Collections.singletonMap("k1", Collections.singletonMap(user.name, user));
-
- listListListUser = Arrays.asList(Arrays.asList(Arrays.asList(user)));
- listListMapUser = Arrays.asList(Arrays.asList(Collections.singletonMap(user.name, user)));
- listMapListUser = Arrays.asList(Collections.singletonMap("k1", Arrays.asList(user)));
- listMapMapUser = Arrays.asList(Collections.singletonMap("k1", Collections.singletonMap(user.name, user)));
- mapListListUser = Collections.singletonMap("k1", Arrays.asList(Arrays.asList(user)));
- mapListMapUser = Collections.singletonMap("k1", Arrays.asList(Collections.singletonMap(user.name, user)));
- mapMapListUser = Collections.singletonMap("k1", Collections.singletonMap("k1", Arrays.asList(user)));
- mapMapMapUser = Collections
- .singletonMap("k1", Collections.singletonMap("k1", Collections.singletonMap(user.name, user)));
+ List<User> listUser = Arrays.asList(user, user);
+
+ Map<String, User> mapUser = new LinkedHashMap<>();
+ mapUser.put("k1", user);
+ mapUser.put("k2", user);
+
+ listListUser = Arrays.asList(listUser, listUser);
+ listMapUser = Arrays.asList(mapUser, mapUser);
+
+ mapListUser = new LinkedHashMap<>();
+ mapListUser.put("k1", listUser);
+ mapListUser.put("k2", listUser);
+
+ mapMapUser = new LinkedHashMap<>();
+ mapMapUser.put("k1", mapUser);
+ mapMapUser.put("k2", mapUser);
+
+ listListListUser = Arrays.asList(listListUser, listListUser);
+ listListMapUser = Arrays.asList(listMapUser, listMapUser);
+ listMapListUser = Arrays.asList(mapListUser, mapListUser);
+ listMapMapUser = Arrays.asList(mapMapUser, mapMapUser);
+
+ mapListListUser = new LinkedHashMap<>();
+ mapListListUser.put("k1", listListUser);
+ mapListListUser.put("k2", listListUser);
+
+ mapListMapUser = new LinkedHashMap<>();
+ mapListMapUser.put("k1", listMapUser);
+ mapListMapUser.put("k2", listMapUser);
+
+ mapMapListUser = new LinkedHashMap<>();
+ mapMapListUser.put("k1", mapListUser);
+ mapMapListUser.put("k2", mapListUser);
+
+ mapMapMapUser = new LinkedHashMap<>();
+ mapMapMapUser.put("k1", mapMapUser);
+ mapMapMapUser.put("k2", mapMapUser);
}
}
@@ -133,19 +156,36 @@ public class TestModelWrap {
ProtoMapMapUser protoMapMapUser = new ProtoMapMapUser();
protoMapMapUser.init();
- listListUser = Arrays.asList(protoListUser);
- listMapUser = Arrays.asList(protoMapUser);
- mapListUser = Collections.singletonMap("k1", protoListUser);
- mapMapUser = Collections.singletonMap("k1", protoMapUser);
-
- listListListUser = Arrays.asList(protoListListUser);
- listListMapUser = Arrays.asList(protoListMapUser);
- listMapListUser = Arrays.asList(protoMapListUser);
- listMapMapUser = Arrays.asList(protoMapMapUser);
- mapListListUser = Collections.singletonMap("k1", protoListListUser);
- mapListMapUser = Collections.singletonMap("k1", protoListMapUser);
- mapMapListUser = Collections.singletonMap("k1", protoMapListUser);
- mapMapMapUser = Collections.singletonMap("k1", protoMapMapUser);
+ listListUser = Arrays.asList(protoListUser, protoListUser);
+ listMapUser = Arrays.asList(protoMapUser, protoMapUser);
+ mapListUser = new LinkedHashMap<>();
+ mapListUser.put("k1", protoListUser);
+ mapListUser.put("k2", protoListUser);
+
+ mapMapUser = new LinkedHashMap<>();
+ mapMapUser.put("k1", protoMapUser);
+ mapMapUser.put("k2", protoMapUser);
+
+ listListListUser = Arrays.asList(protoListListUser, protoListListUser);
+ listListMapUser = Arrays.asList(protoListMapUser, protoListMapUser);
+ listMapListUser = Arrays.asList(protoMapListUser, protoMapListUser);
+ listMapMapUser = Arrays.asList(protoMapMapUser, protoMapMapUser);
+
+ mapListListUser = new LinkedHashMap<>();
+ mapListListUser.put("k1", protoListListUser);
+ mapListListUser.put("k2", protoListListUser);
+
+ mapListMapUser = new LinkedHashMap<>();
+ mapListMapUser.put("k1", protoListMapUser);
+ mapListMapUser.put("k2", protoListMapUser);
+
+ mapMapListUser = new LinkedHashMap<>();
+ mapMapListUser.put("k1", protoMapListUser);
+ mapMapListUser.put("k2", protoMapListUser);
+
+ mapMapMapUser = new LinkedHashMap<>();
+ mapMapMapUser.put("k1", protoMapMapUser);
+ mapMapMapUser.put("k2", protoMapMapUser);
}
}
@@ -155,7 +195,7 @@ public class TestModelWrap {
public void init() {
ProtoListUser protoListUser = new ProtoListUser();
protoListUser.init();
- value = Arrays.asList(protoListUser);
+ value = Arrays.asList(protoListUser, protoListUser);
}
}
@@ -165,7 +205,7 @@ public class TestModelWrap {
public void init() {
ProtoMapUser protoMapUser = new ProtoMapUser();
protoMapUser.init();
- value = Arrays.asList(protoMapUser);
+ value = Arrays.asList(protoMapUser, protoMapUser);
}
}
@@ -175,7 +215,9 @@ public class TestModelWrap {
public void init() {
ProtoListUser protoListUser = new ProtoListUser();
protoListUser.init();
- value = Collections.singletonMap("k1", protoListUser);
+ value = new LinkedHashMap<>();
+ value.put("k1", protoListUser);
+ value.put("k2", protoListUser);
}
}
@@ -185,7 +227,9 @@ public class TestModelWrap {
public void init() {
ProtoMapUser protoMapUser = new ProtoMapUser();
protoMapUser.init();
- value = Collections.singletonMap("k1", protoMapUser);
+ value = new LinkedHashMap<>();
+ value.put("k1", protoMapUser);
+ value.put("k2", protoMapUser);
}
}
@@ -193,7 +237,7 @@ public class TestModelWrap {
public List<User> value;
public void init() {
- value = Arrays.asList(user);
+ value = Arrays.asList(user, user);
}
}
@@ -201,20 +245,26 @@ public class TestModelWrap {
public Map<String, User> value;
public void init() {
- value = Collections.singletonMap(user.name, user);
+ value = new LinkedHashMap<>();
+ value.put("k1", user);
+ value.put("k2", user);
}
}
@SuppressWarnings("unchecked")
@Test
public void pojoModel() throws IOException {
- RootSerializer pojoSerializer = modelProtoMapper.findRootSerializer("PojoModel");
- RootDeserializer pojoMapDeserializer = modelProtoMapper.createRootDeserializer(Map.class, "PojoModel");
- RootDeserializer pojoModelDeserializer = modelProtoMapper.createRootDeserializer(PojoModel.class, "PojoModel");
-
- RootSerializer protoSerializer = modelProtoMapper.findRootSerializer("ProtoModel");
- RootDeserializer protoMapDeserializer = modelProtoMapper.createRootDeserializer(Map.class, "ProtoModel");
- RootDeserializer protoModelDeserializer = modelProtoMapper.createRootDeserializer(ProtoModel.class, "ProtoModel");
+ RootSerializer pojoSerializer = modelProtoMapper.createRootSerializer("PojoModel", PojoModel.class);
+ RootDeserializer<Map<String, Object>> pojoMapDeserializer = modelProtoMapper
+ .createRootDeserializer("PojoModel", Map.class);
+ RootDeserializer<PojoModel> pojoModelDeserializer = modelProtoMapper
+ .createRootDeserializer("PojoModel", PojoModel.class);
+
+ RootSerializer protoSerializer = modelProtoMapper.createRootSerializer("ProtoModel", ProtoModel.class);
+ RootDeserializer<Map<String, Object>> protoMapDeserializer = modelProtoMapper
+ .createRootDeserializer("ProtoModel", Map.class);
+ RootDeserializer<ProtoModel> protoModelDeserializer = modelProtoMapper
+ .createRootDeserializer("ProtoModel", ProtoModel.class);
PojoModel pojoModel = new PojoModel();
pojoModel.init();
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/TestSchemaBase.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/TestSchemaBase.java
index 664be90..2743aa1 100644
--- a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/TestSchemaBase.java
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/TestSchemaBase.java
@@ -24,6 +24,8 @@ import org.apache.servicecomb.foundation.protobuf.ProtoMapper;
import org.apache.servicecomb.foundation.protobuf.ProtoMapperFactory;
import org.apache.servicecomb.foundation.protobuf.RootDeserializer;
import org.apache.servicecomb.foundation.protobuf.RootSerializer;
+import org.apache.servicecomb.foundation.protobuf.internal.model.PrimitiveArrays;
+import org.apache.servicecomb.foundation.protobuf.internal.model.PrimitiveWrapperArrays;
import org.apache.servicecomb.foundation.protobuf.internal.model.ProtobufRoot;
import org.apache.servicecomb.foundation.protobuf.internal.model.Root;
import org.junit.Assert;
@@ -41,6 +43,18 @@ public class TestSchemaBase {
protected static RootDeserializer<Root> rootDeserializer = protoMapper.createRootDeserializer("Root", Root.class);
+ protected static RootSerializer primitiveArraysSerializer = protoMapper
+ .createRootSerializer("Root", PrimitiveArrays.class);
+
+ protected static RootDeserializer<Root> primitiveArraysDeserializer = protoMapper
+ .createRootDeserializer("Root", PrimitiveArrays.class);
+
+ protected static RootSerializer primitiveWrapperArraysSerializer = protoMapper
+ .createRootSerializer("Root", PrimitiveWrapperArrays.class);
+
+ protected static RootDeserializer<Root> primitiveWrapperArraysDeserializer = protoMapper
+ .createRootDeserializer("Root", PrimitiveWrapperArrays.class);
+
protected static RootDeserializer<Map<String, Object>> mapRootDeserializer = protoMapper
.createRootDeserializer("Root", Map.class);
@@ -83,6 +97,44 @@ public class TestSchemaBase {
}
}
+ protected void checkRepeatedWithPrimitive() throws Exception {
+ check();
+
+ check(primitiveArraysDeserializer, mapRootDeserializer, primitiveArraysSerializer, false);
+ String primitiveFieldName = scbMap.keySet().iterator().next();
+ java.lang.reflect.Field primitiveField = PrimitiveArrays.class.getDeclaredField(primitiveFieldName);
+ primitiveField.setAccessible(true);
+ Object primitiveArray = primitiveField.get(scbRoot);
+
+ check(primitiveWrapperArraysDeserializer, mapRootDeserializer, primitiveWrapperArraysSerializer, false);
+ String wrapperFieldName = scbMap.keySet().iterator().next();
+ java.lang.reflect.Field wrapperField = PrimitiveWrapperArrays.class.getDeclaredField(wrapperFieldName);
+ wrapperField.setAccessible(true);
+ Object[] array = (Object[]) wrapperField.get(scbRoot);
+
+ // dynamic strings
+ String[] strings = new String[array.length];
+ for (int idx = 0; idx < array.length; idx++) {
+ strings[idx] = array[idx].toString();
+ }
+ scbMap.clear();
+ scbMap.put(primitiveFieldName, strings);
+ scbMapBytes = primitiveArraysSerializer.serialize(scbMap);
+ Assert.assertArrayEquals(protobufBytes, scbMapBytes);
+
+ // dynamic primitive array
+ scbMap.clear();
+ scbMap.put(primitiveFieldName, primitiveArray);
+ scbMapBytes = primitiveArraysSerializer.serialize(scbMap);
+ Assert.assertArrayEquals(protobufBytes, scbMapBytes);
+
+ // dynamic array
+ scbMap.clear();
+ scbMap.put(primitiveFieldName, array);
+ scbMapBytes = primitiveArraysSerializer.serialize(scbMap);
+ Assert.assertArrayEquals(protobufBytes, scbMapBytes);
+ }
+
protected void check() throws IOException {
check(rootDeserializer, mapRootDeserializer, rootSerializer, false);
}
@@ -99,11 +151,11 @@ public class TestSchemaBase {
// 2.weak type deserialize
scbMap = mapDeserializer.deserialize(protobufBytes);
// 3.weak type serialize
- scbMapBytes = rootSerializer.serialize(scbMap);
+ scbMapBytes = serializer.serialize(scbMap);
// 4.strong type deserialize
scbRoot = deserializer.deserialize(scbMapBytes);
// 5.strong type serialize
- scbRootBytes = rootSerializer.serialize(scbRoot);
+ scbRootBytes = serializer.serialize(scbRoot);
if (print) {
System.out.println("scbRoot bytes:" + Hex.encodeHexString(scbRootBytes));
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/bean/TestBeanDescriptorManager.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/bean/TestBeanDescriptorManager.java
index dff8e42..9d2994b 100644
--- a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/bean/TestBeanDescriptorManager.java
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/bean/TestBeanDescriptorManager.java
@@ -19,6 +19,10 @@ package org.apache.servicecomb.foundation.protobuf.internal.bean;
import java.lang.reflect.Method;
import org.apache.servicecomb.foundation.common.utils.ReflectUtils;
+import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntSetter;
+import org.apache.servicecomb.foundation.common.utils.bean.Setter;
import org.junit.Assert;
import org.junit.Test;
@@ -100,38 +104,42 @@ public class TestBeanDescriptorManager {
Assert.assertSame(Model.class, beanDescriptor.getJavaType().getRawClass());
}
+ @SuppressWarnings("unchecked")
@Test
- public void both() throws Throwable {
+ public void both() {
PropertyDescriptor propertyDescriptor = beanDescriptor.getPropertyDescriptors().get("both");
- propertyDescriptor.getSetter().set(model, 1);
- Assert.assertEquals(1, propertyDescriptor.getGetter().get(model));
+ ((IntSetter<Model>) propertyDescriptor.getSetter()).set(model, 1);
+ Assert.assertEquals(1, ((IntGetter<Model>) propertyDescriptor.getGetter()).get(model));
Assert.assertEquals(1, model.getBoth());
}
+ @SuppressWarnings("unchecked")
@Test
- public void onlyGet() throws Throwable {
+ public void onlyGet() {
PropertyDescriptor propertyDescriptor = beanDescriptor.getPropertyDescriptors().get("onlyGet");
Assert.assertNull(propertyDescriptor.getSetter());
model.onlyGet(1);
- Assert.assertEquals(1, propertyDescriptor.getGetter().get(model));
+ Assert.assertEquals(1, ((IntGetter<Model>) propertyDescriptor.getGetter()).get(model));
Assert.assertEquals(1, model.getOnlyGet());
}
+ @SuppressWarnings("unchecked")
@Test
- public void onlySet() throws Throwable {
+ public void onlySet() {
PropertyDescriptor propertyDescriptor = beanDescriptor.getPropertyDescriptors().get("onlySet");
Assert.assertNull(propertyDescriptor.getGetter());
- propertyDescriptor.getSetter().set(model, 1);
+ ((IntSetter<Model>) propertyDescriptor.getSetter()).set(model, 1);
Assert.assertEquals(1, model.onlySet());
}
+ @SuppressWarnings("unchecked")
@Test
- public void direct() throws Throwable {
+ public void direct() {
PropertyDescriptor propertyDescriptor = beanDescriptor.getPropertyDescriptors().get("direct");
- propertyDescriptor.getSetter().set(model, 1);
- Assert.assertEquals(1, propertyDescriptor.getGetter().get(model));
+ ((Setter<Model, Integer>) propertyDescriptor.getSetter()).set(model, 1);
+ Assert.assertEquals(1, (int) ((Getter<Model, Integer>) propertyDescriptor.getGetter()).get(model));
Assert.assertEquals(1, model.direct);
}
}
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/PrimitiveArrays.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/PrimitiveArrays.java
new file mode 100644
index 0000000..fdaa1f5
--- /dev/null
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/PrimitiveArrays.java
@@ -0,0 +1,301 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License")Packed; you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.foundation.protobuf.internal.model;
+
+import org.apache.servicecomb.foundation.test.scaffolding.model.Color;
+
+public class PrimitiveArrays {
+ private int[] int32sPacked;
+
+ private long[] int64sPacked;
+
+ private int[] uint32sPacked;
+
+ private long[] uint64sPacked;
+
+ private int[] sint32sPacked;
+
+ private long[] sint64sPacked;
+
+ private int[] fixed32sPacked;
+
+ private long[] fixed64sPacked;
+
+ private int[] sfixed32sPacked;
+
+ private long[] sfixed64sPacked;
+
+ private float[] floatsPacked;
+
+ private double[] doublesPacked;
+
+ private boolean[] boolsPacked;
+
+ private Color[] colorsPacked;
+
+ private int[] int32sNotPacked;
+
+ private long[] int64sNotPacked;
+
+ private int[] uint32sNotPacked;
+
+ private long[] uint64sNotPacked;
+
+ private int[] sint32sNotPacked;
+
+ private long[] sint64sNotPacked;
+
+ private int[] fixed32sNotPacked;
+
+ private long[] fixed64sNotPacked;
+
+ private int[] sfixed32sNotPacked;
+
+ private long[] sfixed64sNotPacked;
+
+ private float[] floatsNotPacked;
+
+ private double[] doublesNotPacked;
+
+ private boolean[] boolsNotPacked;
+
+ private Color[] colorsNotPacked;
+
+ public int[] getInt32sPacked() {
+ return int32sPacked;
+ }
+
+ public void setInt32sPacked(int[] int32sPacked) {
+ this.int32sPacked = int32sPacked;
+ }
+
+ public long[] getInt64sPacked() {
+ return int64sPacked;
+ }
+
+ public void setInt64sPacked(long[] int64sPacked) {
+ this.int64sPacked = int64sPacked;
+ }
+
+ public int[] getUint32sPacked() {
+ return uint32sPacked;
+ }
+
+ public void setUint32sPacked(int[] uint32sPacked) {
+ this.uint32sPacked = uint32sPacked;
+ }
+
+ public long[] getUint64sPacked() {
+ return uint64sPacked;
+ }
+
+ public void setUint64sPacked(long[] uint64sPacked) {
+ this.uint64sPacked = uint64sPacked;
+ }
+
+ public int[] getSint32sPacked() {
+ return sint32sPacked;
+ }
+
+ public void setSint32sPacked(int[] sint32sPacked) {
+ this.sint32sPacked = sint32sPacked;
+ }
+
+ public long[] getSint64sPacked() {
+ return sint64sPacked;
+ }
+
+ public void setSint64sPacked(long[] sint64sPacked) {
+ this.sint64sPacked = sint64sPacked;
+ }
+
+ public int[] getFixed32sPacked() {
+ return fixed32sPacked;
+ }
+
+ public void setFixed32sPacked(int[] fixed32sPacked) {
+ this.fixed32sPacked = fixed32sPacked;
+ }
+
+ public long[] getFixed64sPacked() {
+ return fixed64sPacked;
+ }
+
+ public void setFixed64sPacked(long[] fixed64sPacked) {
+ this.fixed64sPacked = fixed64sPacked;
+ }
+
+ public int[] getSfixed32sPacked() {
+ return sfixed32sPacked;
+ }
+
+ public void setSfixed32sPacked(int[] sfixed32sPacked) {
+ this.sfixed32sPacked = sfixed32sPacked;
+ }
+
+ public long[] getSfixed64sPacked() {
+ return sfixed64sPacked;
+ }
+
+ public void setSfixed64sPacked(long[] sfixed64sPacked) {
+ this.sfixed64sPacked = sfixed64sPacked;
+ }
+
+ public float[] getFloatsPacked() {
+ return floatsPacked;
+ }
+
+ public void setFloatsPacked(float[] floatsPacked) {
+ this.floatsPacked = floatsPacked;
+ }
+
+ public double[] getDoublesPacked() {
+ return doublesPacked;
+ }
+
+ public void setDoublesPacked(double[] doublesPacked) {
+ this.doublesPacked = doublesPacked;
+ }
+
+ public boolean[] getBoolsPacked() {
+ return boolsPacked;
+ }
+
+ public void setBoolsPacked(boolean[] boolsPacked) {
+ this.boolsPacked = boolsPacked;
+ }
+
+ public int[] getInt32sNotPacked() {
+ return int32sNotPacked;
+ }
+
+ public void setInt32sNotPacked(int[] int32sNotPacked) {
+ this.int32sNotPacked = int32sNotPacked;
+ }
+
+ public long[] getInt64sNotPacked() {
+ return int64sNotPacked;
+ }
+
+ public void setInt64sNotPacked(long[] int64sNotPacked) {
+ this.int64sNotPacked = int64sNotPacked;
+ }
+
+ public int[] getUint32sNotPacked() {
+ return uint32sNotPacked;
+ }
+
+ public void setUint32sNotPacked(int[] uint32sNotPacked) {
+ this.uint32sNotPacked = uint32sNotPacked;
+ }
+
+ public long[] getUint64sNotPacked() {
+ return uint64sNotPacked;
+ }
+
+ public void setUint64sNotPacked(long[] uint64sNotPacked) {
+ this.uint64sNotPacked = uint64sNotPacked;
+ }
+
+ public int[] getSint32sNotPacked() {
+ return sint32sNotPacked;
+ }
+
+ public void setSint32sNotPacked(int[] sint32sNotPacked) {
+ this.sint32sNotPacked = sint32sNotPacked;
+ }
+
+ public long[] getSint64sNotPacked() {
+ return sint64sNotPacked;
+ }
+
+ public void setSint64sNotPacked(long[] sint64sNotPacked) {
+ this.sint64sNotPacked = sint64sNotPacked;
+ }
+
+ public int[] getFixed32sNotPacked() {
+ return fixed32sNotPacked;
+ }
+
+ public void setFixed32sNotPacked(int[] fixed32sNotPacked) {
+ this.fixed32sNotPacked = fixed32sNotPacked;
+ }
+
+ public long[] getFixed64sNotPacked() {
+ return fixed64sNotPacked;
+ }
+
+ public void setFixed64sNotPacked(long[] fixed64sNotPacked) {
+ this.fixed64sNotPacked = fixed64sNotPacked;
+ }
+
+ public int[] getSfixed32sNotPacked() {
+ return sfixed32sNotPacked;
+ }
+
+ public void setSfixed32sNotPacked(int[] sfixed32sNotPacked) {
+ this.sfixed32sNotPacked = sfixed32sNotPacked;
+ }
+
+ public long[] getSfixed64sNotPacked() {
+ return sfixed64sNotPacked;
+ }
+
+ public void setSfixed64sNotPacked(long[] sfixed64sNotPacked) {
+ this.sfixed64sNotPacked = sfixed64sNotPacked;
+ }
+
+ public float[] getFloatsNotPacked() {
+ return floatsNotPacked;
+ }
+
+ public void setFloatsNotPacked(float[] floatsNotPacked) {
+ this.floatsNotPacked = floatsNotPacked;
+ }
+
+ public double[] getDoublesNotPacked() {
+ return doublesNotPacked;
+ }
+
+ public void setDoublesNotPacked(double[] doublesNotPacked) {
+ this.doublesNotPacked = doublesNotPacked;
+ }
+
+ public boolean[] getBoolsNotPacked() {
+ return boolsNotPacked;
+ }
+
+ public void setBoolsNotPacked(boolean[] boolsNotPacked) {
+ this.boolsNotPacked = boolsNotPacked;
+ }
+
+ public Color[] getColorsPacked() {
+ return colorsPacked;
+ }
+
+ public void setColorsPacked(Color[] colorsPacked) {
+ this.colorsPacked = colorsPacked;
+ }
+
+ public Color[] getColorsNotPacked() {
+ return colorsNotPacked;
+ }
+
+ public void setColorsNotPacked(Color[] colorsNotPacked) {
+ this.colorsNotPacked = colorsNotPacked;
+ }
+}
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/PrimitiveWrapperArrays.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/PrimitiveWrapperArrays.java
new file mode 100644
index 0000000..23392a9
--- /dev/null
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/PrimitiveWrapperArrays.java
@@ -0,0 +1,301 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License")Packed; you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.foundation.protobuf.internal.model;
+
+import org.apache.servicecomb.foundation.test.scaffolding.model.Color;
+
+public class PrimitiveWrapperArrays {
+ private Integer[] int32sPacked;
+
+ private Long[] int64sPacked;
+
+ private Integer[] uint32sPacked;
+
+ private Long[] uint64sPacked;
+
+ private Integer[] sint32sPacked;
+
+ private Long[] sint64sPacked;
+
+ private Integer[] fixed32sPacked;
+
+ private Long[] fixed64sPacked;
+
+ private Integer[] sfixed32sPacked;
+
+ private Long[] sfixed64sPacked;
+
+ private Float[] floatsPacked;
+
+ private Double[] doublesPacked;
+
+ private Boolean[] boolsPacked;
+
+ private Color[] colorsPacked;
+
+ private Integer[] int32sNotPacked;
+
+ private Long[] int64sNotPacked;
+
+ private Integer[] uint32sNotPacked;
+
+ private Long[] uint64sNotPacked;
+
+ private Integer[] sint32sNotPacked;
+
+ private Long[] sint64sNotPacked;
+
+ private Integer[] fixed32sNotPacked;
+
+ private Long[] fixed64sNotPacked;
+
+ private Integer[] sfixed32sNotPacked;
+
+ private Long[] sfixed64sNotPacked;
+
+ private Float[] floatsNotPacked;
+
+ private Double[] doublesNotPacked;
+
+ private Boolean[] boolsNotPacked;
+
+ private Color[] colorsNotPacked;
+
+ public Integer[] getInt32sPacked() {
+ return int32sPacked;
+ }
+
+ public void setInt32sPacked(Integer[] int32sPacked) {
+ this.int32sPacked = int32sPacked;
+ }
+
+ public Long[] getInt64sPacked() {
+ return int64sPacked;
+ }
+
+ public void setInt64sPacked(Long[] int64sPacked) {
+ this.int64sPacked = int64sPacked;
+ }
+
+ public Integer[] getUint32sPacked() {
+ return uint32sPacked;
+ }
+
+ public void setUint32sPacked(Integer[] uint32sPacked) {
+ this.uint32sPacked = uint32sPacked;
+ }
+
+ public Long[] getUint64sPacked() {
+ return uint64sPacked;
+ }
+
+ public void setUint64sPacked(Long[] uint64sPacked) {
+ this.uint64sPacked = uint64sPacked;
+ }
+
+ public Integer[] getSint32sPacked() {
+ return sint32sPacked;
+ }
+
+ public void setSint32sPacked(Integer[] sint32sPacked) {
+ this.sint32sPacked = sint32sPacked;
+ }
+
+ public Long[] getSint64sPacked() {
+ return sint64sPacked;
+ }
+
+ public void setSint64sPacked(Long[] sint64sPacked) {
+ this.sint64sPacked = sint64sPacked;
+ }
+
+ public Integer[] getFixed32sPacked() {
+ return fixed32sPacked;
+ }
+
+ public void setFixed32sPacked(Integer[] fixed32sPacked) {
+ this.fixed32sPacked = fixed32sPacked;
+ }
+
+ public Long[] getFixed64sPacked() {
+ return fixed64sPacked;
+ }
+
+ public void setFixed64sPacked(Long[] fixed64sPacked) {
+ this.fixed64sPacked = fixed64sPacked;
+ }
+
+ public Integer[] getSfixed32sPacked() {
+ return sfixed32sPacked;
+ }
+
+ public void setSfixed32sPacked(Integer[] sfixed32sPacked) {
+ this.sfixed32sPacked = sfixed32sPacked;
+ }
+
+ public Long[] getSfixed64sPacked() {
+ return sfixed64sPacked;
+ }
+
+ public void setSfixed64sPacked(Long[] sfixed64sPacked) {
+ this.sfixed64sPacked = sfixed64sPacked;
+ }
+
+ public Float[] getFloatsPacked() {
+ return floatsPacked;
+ }
+
+ public void setFloatsPacked(Float[] floatsPacked) {
+ this.floatsPacked = floatsPacked;
+ }
+
+ public Double[] getDoublesPacked() {
+ return doublesPacked;
+ }
+
+ public void setDoublesPacked(Double[] doublesPacked) {
+ this.doublesPacked = doublesPacked;
+ }
+
+ public Boolean[] getBoolsPacked() {
+ return boolsPacked;
+ }
+
+ public void setBoolsPacked(Boolean[] boolsPacked) {
+ this.boolsPacked = boolsPacked;
+ }
+
+ public Integer[] getInt32sNotPacked() {
+ return int32sNotPacked;
+ }
+
+ public void setInt32sNotPacked(Integer[] int32sNotPacked) {
+ this.int32sNotPacked = int32sNotPacked;
+ }
+
+ public Long[] getInt64sNotPacked() {
+ return int64sNotPacked;
+ }
+
+ public void setInt64sNotPacked(Long[] int64sNotPacked) {
+ this.int64sNotPacked = int64sNotPacked;
+ }
+
+ public Integer[] getUint32sNotPacked() {
+ return uint32sNotPacked;
+ }
+
+ public void setUint32sNotPacked(Integer[] uint32sNotPacked) {
+ this.uint32sNotPacked = uint32sNotPacked;
+ }
+
+ public Long[] getUint64sNotPacked() {
+ return uint64sNotPacked;
+ }
+
+ public void setUint64sNotPacked(Long[] uint64sNotPacked) {
+ this.uint64sNotPacked = uint64sNotPacked;
+ }
+
+ public Integer[] getSint32sNotPacked() {
+ return sint32sNotPacked;
+ }
+
+ public void setSint32sNotPacked(Integer[] sint32sNotPacked) {
+ this.sint32sNotPacked = sint32sNotPacked;
+ }
+
+ public Long[] getSint64sNotPacked() {
+ return sint64sNotPacked;
+ }
+
+ public void setSint64sNotPacked(Long[] sint64sNotPacked) {
+ this.sint64sNotPacked = sint64sNotPacked;
+ }
+
+ public Integer[] getFixed32sNotPacked() {
+ return fixed32sNotPacked;
+ }
+
+ public void setFixed32sNotPacked(Integer[] fixed32sNotPacked) {
+ this.fixed32sNotPacked = fixed32sNotPacked;
+ }
+
+ public Long[] getFixed64sNotPacked() {
+ return fixed64sNotPacked;
+ }
+
+ public void setFixed64sNotPacked(Long[] fixed64sNotPacked) {
+ this.fixed64sNotPacked = fixed64sNotPacked;
+ }
+
+ public Integer[] getSfixed32sNotPacked() {
+ return sfixed32sNotPacked;
+ }
+
+ public void setSfixed32sNotPacked(Integer[] sfixed32sNotPacked) {
+ this.sfixed32sNotPacked = sfixed32sNotPacked;
+ }
+
+ public Long[] getSfixed64sNotPacked() {
+ return sfixed64sNotPacked;
+ }
+
+ public void setSfixed64sNotPacked(Long[] sfixed64sNotPacked) {
+ this.sfixed64sNotPacked = sfixed64sNotPacked;
+ }
+
+ public Float[] getFloatsNotPacked() {
+ return floatsNotPacked;
+ }
+
+ public void setFloatsNotPacked(Float[] floatsNotPacked) {
+ this.floatsNotPacked = floatsNotPacked;
+ }
+
+ public Double[] getDoublesNotPacked() {
+ return doublesNotPacked;
+ }
+
+ public void setDoublesNotPacked(Double[] doublesNotPacked) {
+ this.doublesNotPacked = doublesNotPacked;
+ }
+
+ public Boolean[] getBoolsNotPacked() {
+ return boolsNotPacked;
+ }
+
+ public void setBoolsNotPacked(Boolean[] boolsNotPacked) {
+ this.boolsNotPacked = boolsNotPacked;
+ }
+
+ public Color[] getColorsPacked() {
+ return colorsPacked;
+ }
+
+ public void setColorsPacked(Color[] colorsPacked) {
+ this.colorsPacked = colorsPacked;
+ }
+
+ public Color[] getColorsNotPacked() {
+ return colorsNotPacked;
+ }
+
+ public void setColorsNotPacked(Color[] colorsNotPacked) {
+ this.colorsNotPacked = colorsNotPacked;
+ }
+}
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/User.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/User.java
index 642d381..06c7d2e 100644
--- a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/User.java
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/User.java
@@ -21,6 +21,13 @@ public class User {
private Root typeRecursive;
+ public User() {
+ }
+
+ public User(String name) {
+ this.name = name;
+ }
+
public String getName() {
return name;
}
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestAnySchema.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestAnySchema.java
index fb2868e..ebdc754 100644
--- a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestAnySchema.java
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestAnySchema.java
@@ -32,13 +32,11 @@ import org.junit.Test;
import com.google.protobuf.Any;
public class TestAnySchema extends TestSchemaBase {
- public TestAnySchema() {
- initField("any");
- }
-
@Test
public void empty() throws Throwable {
- Assert.assertEquals(0, serFieldSchema.writeTo(null).length);
+ scbMap = new HashMap<>();
+ scbMap.put("any", null);
+ Assert.assertEquals(0, rootSerializer.serialize(scbMap).length);
}
@Test
@@ -85,7 +83,7 @@ public class TestAnySchema extends TestSchemaBase {
Assert.assertThat(root.getAny(), Matchers.instanceOf(Map.class));
Assert.assertThat((Map<? extends String, ? extends String>) root.getAny(), Matchers.hasEntry("name", "n1"));
- RootDeserializer deserializer = protoMapper.createRootDeserializer(Map.class, "Root");
+ RootDeserializer<Map<String, Object>> deserializer = protoMapper.createRootDeserializer("Root", Map.class);
map = deserializer.deserialize(scbRootBytes);
Assert.assertThat((Map<? extends String, ? extends String>) map.get("any"), Matchers.hasEntry("name", "n1"));
}
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestMessageSchema.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestMessageSchema.java
index 8da3a5d..56fe453 100644
--- a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestMessageSchema.java
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestMessageSchema.java
@@ -42,7 +42,7 @@ public class TestMessageSchema extends TestSchemaBase {
@Test
public void generic() throws Throwable {
JavaType javaType = TypeFactory.defaultInstance().constructParametricType(CustomGeneric.class, User.class);
- RootDeserializer genericDeserializer = protoMapper.createRootDeserializer(javaType, "Root");
+ RootDeserializer<CustomGeneric<User>> genericDeserializer = protoMapper.createRootDeserializer("Root", javaType);
builder.setUser(ProtobufRoot.User.newBuilder().setName("name1").build());
check(genericDeserializer, mapRootDeserializer, rootSerializer, false);
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestRepeatedSchema.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestRepeatedSchema.java
index 48e4c05..c5b9019 100644
--- a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestRepeatedSchema.java
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/schema/TestRepeatedSchema.java
@@ -16,35 +16,227 @@
*/
package org.apache.servicecomb.foundation.protobuf.internal.schema;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;
import org.apache.servicecomb.foundation.protobuf.internal.TestSchemaBase;
import org.apache.servicecomb.foundation.protobuf.internal.model.ProtobufRoot;
+import org.apache.servicecomb.foundation.protobuf.internal.model.ProtobufRoot.Color;
+import org.apache.servicecomb.foundation.protobuf.internal.model.User;
import org.junit.Assert;
import org.junit.Test;
+import com.google.protobuf.ByteString;
+
public class TestRepeatedSchema extends TestSchemaBase {
public static class RootWithArray {
- public String[] sList;
+ public byte[][] bytess;
+
+ public String[] strings;
+
+ public User[] users;
}
@Test
- public void sList() throws Throwable {
+ public void fixed32s() throws Exception {
+ builder.addAllFixed32SPacked(Arrays.asList(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void fixed32sNotPacked() throws Exception {
+ builder.addAllFixed32SNotPacked(Arrays.asList(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void sfixed32s() throws Exception {
+ builder.addAllSfixed32SPacked(Arrays.asList(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void sfixed32sNotPacked() throws Exception {
+ builder.addAllSfixed32SNotPacked(Arrays.asList(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void int32s() throws Exception {
+ builder.addAllInt32SPacked(Arrays.asList(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void int32sNotPacked() throws Exception {
+ builder.addAllInt32SNotPacked(Arrays.asList(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void sint32s() throws Exception {
+ builder.addAllSint32SPacked(Arrays.asList(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void sint32sNotPacked() throws Exception {
+ builder.addAllSint32SNotPacked(Arrays.asList(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void uint32s() throws Exception {
+ builder.addAllUint32SPacked(Arrays.asList(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void uint32sNotPacked() throws Exception {
+ builder.addAllUint32SNotPacked(Arrays.asList(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void fixed64s() throws Exception {
+ builder.addAllFixed64SPacked(Arrays.asList(Long.MIN_VALUE, 0L, Long.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void fixed64sNotPacked() throws Exception {
+ builder.addAllFixed64SNotPacked(Arrays.asList(Long.MIN_VALUE, 0L, Long.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void sfixed64s() throws Exception {
+ builder.addAllSfixed64SPacked(Arrays.asList(Long.MIN_VALUE, 0L, Long.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void sfixed64sNotPacked() throws Exception {
+ builder.addAllSfixed64SNotPacked(Arrays.asList(Long.MIN_VALUE, 0L, Long.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void int64s() throws Exception {
+ builder.addAllInt64SPacked(Arrays.asList(Long.MIN_VALUE, 0L, Long.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void int64sNotPacked() throws Exception {
+ builder.addAllInt64SNotPacked(Arrays.asList(Long.MIN_VALUE, 0L, Long.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void sint64s() throws Exception {
+ builder.addAllSint64SPacked(Arrays.asList(Long.MIN_VALUE, 0L, Long.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void sint64sNotPacked() throws Exception {
+ builder.addAllSint64SNotPacked(Arrays.asList(Long.MIN_VALUE, 0L, Long.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void uint64s() throws Exception {
+ builder.addAllUint64SPacked(Arrays.asList(Long.MIN_VALUE, 0L, Long.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void uint64sNotPacked() throws Exception {
+ builder.addAllUint64SNotPacked(Arrays.asList(Long.MIN_VALUE, 0L, Long.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void floats() throws Exception {
+ builder.addAllFloatsPacked(Arrays.asList(Float.MIN_VALUE, (float) 0.0, Float.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void floatsNotPacked() throws Exception {
+ builder.addAllFloatsNotPacked(Arrays.asList(Float.MIN_VALUE, (float) 0.0, Float.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void doubles() throws Exception {
+ builder.addAllDoublesPacked(Arrays.asList(Double.MIN_VALUE, 0.0, Double.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void doublesNotPacked() throws Exception {
+ builder.addAllDoublesNotPacked(Arrays.asList(Double.MIN_VALUE, 0.0, Double.MAX_VALUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void bools() throws Exception {
+ builder.addAllBoolsPacked(Arrays.asList(Boolean.FALSE, Boolean.TRUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void boolsNotPacked() throws Exception {
+ builder.addAllBoolsNotPacked(Arrays.asList(Boolean.FALSE, Boolean.TRUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void enums() throws Exception {
+ builder.addAllColorsPacked(Arrays.asList(Color.RED, Color.BLUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void enumsNotPacked() throws Exception {
+ builder.addAllColorsNotPacked(Arrays.asList(Color.RED, Color.BLUE));
+ checkRepeatedWithPrimitive();
+ }
+
+ @Test
+ public void bytess() throws Throwable {
+ List<byte[]> sList = Arrays.asList("v1".getBytes(StandardCharsets.UTF_8), "v2".getBytes(StandardCharsets.UTF_8));
+ builder.addAllBytess(Arrays.asList(ByteString.copyFromUtf8("v1"), ByteString.copyFromUtf8("v2")));
+ check();
+
+ RootWithArray rootWithArray = new RootWithArray();
+ rootWithArray.bytess = (byte[][]) sList.toArray();
+ Assert.assertArrayEquals(protobufBytes, rootSerializer.serialize(rootWithArray));
+ }
+
+ @Test
+ public void strings() throws Throwable {
List<String> sList = Arrays.asList("v1", "v2");
- builder.addAllSList(sList);
+ builder.addAllStrings(sList);
check();
RootWithArray rootWithArray = new RootWithArray();
- rootWithArray.sList = (String[]) sList.toArray();
+ rootWithArray.strings = (String[]) sList.toArray();
Assert.assertArrayEquals(protobufBytes, rootSerializer.serialize(rootWithArray));
}
@Test
- public void pList() throws Throwable {
- builder.addPList(ProtobufRoot.User.newBuilder().setName("name1").build());
- builder.addPList(ProtobufRoot.User.newBuilder().setName("name2").build());
+ public void users() throws Throwable {
+ builder.addUsers(ProtobufRoot.User.newBuilder().setName("name1").build());
+ builder.addUsers(ProtobufRoot.User.newBuilder().setName("name2").build());
check();
+
+ RootWithArray rootWithArray = new RootWithArray();
+ rootWithArray.users = new User[] {new User("name1"), new User("name2")};
+ Assert.assertArrayEquals(protobufBytes, rootSerializer.serialize(rootWithArray));
}
}