blob: 324e3520bf7a1d537d4cbcad01815924baef2514 [file] [log] [blame]
/**
* 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"); 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 com.datatorrent.lib.appdata.gpo;
import java.util.List;
import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
import org.apache.commons.lang3.mutable.MutableInt;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.datatorrent.lib.appdata.schemas.FieldsDescriptor;
import com.datatorrent.lib.appdata.schemas.Type;
public class SerdeListGPOMutableTest
{
@Test
public void testSerialization()
{
final Map<String, Type> fieldToType = Maps.newHashMap();
final String tboolean = "tboolean";
final Boolean tbooleanv = true;
final Boolean tbooleanv1 = true;
final String tchar = "tchar";
final Character tcharv = 'A';
final Character tcharv1 = 'b';
final String tstring = "tstring";
final String tstringv = "hello";
final String tstringv1 = "hello1";
final String tfloat = "tfloat";
final Float tfloatv = 1.0f;
final Float tfloatv1 = 2.0f;
final String tdouble = "tdouble";
final Double tdoublev = 2.0;
final Double tdoublev1 = 3.0;
final String tbyte = "tbyte";
final Byte tbytev = 50;
final Byte tbytev1 = 55;
final String tshort = "tshort";
final Short tshortv = 1000;
final Short tshortv1 = 1300;
final String tinteger = "tinteger";
final Integer tintegerv = 100000;
final Integer tintegerv1 = 133000;
final String tlong = "tlong";
final Long tlongv = 10000000000L;
final Long tlongv1 = 10044400000L;
fieldToType.put(tboolean, Type.BOOLEAN);
fieldToType.put(tchar, Type.CHAR);
fieldToType.put(tstring, Type.STRING);
fieldToType.put(tfloat, Type.FLOAT);
fieldToType.put(tdouble, Type.DOUBLE);
fieldToType.put(tbyte, Type.BYTE);
fieldToType.put(tshort, Type.SHORT);
fieldToType.put(tinteger, Type.INTEGER);
fieldToType.put(tlong, Type.LONG);
FieldsDescriptor fd = new FieldsDescriptor(fieldToType);
GPOMutable gpo = new GPOMutable(fd);
gpo.setFieldGeneric(tboolean, tbooleanv);
gpo.setFieldGeneric(tchar, tcharv);
gpo.setField(tstring, tstringv);
gpo.setFieldGeneric(tfloat, tfloatv);
gpo.setFieldGeneric(tdouble, tdoublev);
gpo.setFieldGeneric(tbyte, tbytev);
gpo.setFieldGeneric(tshort, tshortv);
gpo.setFieldGeneric(tinteger, tintegerv);
gpo.setFieldGeneric(tlong, tlongv);
GPOMutable gpo1 = new GPOMutable(fd);
gpo1.setFieldGeneric(tboolean, tbooleanv1);
gpo1.setFieldGeneric(tchar, tcharv1);
gpo1.setField(tstring, tstringv1);
gpo1.setFieldGeneric(tfloat, tfloatv1);
gpo1.setFieldGeneric(tdouble, tdoublev1);
gpo1.setFieldGeneric(tbyte, tbytev1);
gpo1.setFieldGeneric(tshort, tshortv1);
gpo1.setFieldGeneric(tinteger, tintegerv1);
gpo1.setFieldGeneric(tlong, tlongv1);
List<GPOMutable> mutables = Lists.newArrayList(gpo, gpo1);
byte[] bytes = SerdeListGPOMutable.INSTANCE.serializeObject(mutables);
MutableInt offset = new MutableInt(0);
@SuppressWarnings("unchecked")
List<GPOMutable> newMutables = (List<GPOMutable>)SerdeListGPOMutable.INSTANCE.deserializeObject(bytes, offset);
Assert.assertEquals(mutables, newMutables);
Assert.assertEquals(bytes.length, offset.intValue());
}
}