package ser; import com.cedarsoftware.util.DeepEquals; import org.junit.Test; import org.nustaq.serialization.FSTConfiguration; import org.nustaq.serialization.minbin.*; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import static org.junit.Assert.assertTrue; /** * Copyright (c) 2012, Ruediger Moeller. All rights reserved. * <p/> * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * <p/> * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * <p/> * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA * <p/> * Date: 13.04.2014 * Time: 13:41 * To change this template use File | Settings | File Templates. */ public class MinBinTest { @org.junit.Before public void setUp() throws Exception { } @Test public void tagTest() { MBOut out = new MBOut(); String hallo = "Hallo"; out.writeTag(hallo); out.writeTag(null); out.writeTag(123.123d); double da[] = {1.23123d,123123.566546,-123812.23123}; out.writeTag(da); MBSequence seq = new MBSequence("seq").add(hallo).add(null).add(123.123d).add(da).add(new Byte((byte) 1)); MBObject me = new MBObject("me").put("prename", "Ruediger").put("name", "Moeller").put("misc", new int[]{7, 16, 45}).put("test", seq); out.writeTag(me); MBIn in = new MBIn(out.getBytez(),0); Object res = in.readTag(in.readIn()); assertTrue(DeepEquals.deepEquals(res, hallo)); assertTrue(in.readTag(in.readIn()) == null); Double doub = (Double) in.readTag(in.readIn()); assertTrue(doub.doubleValue() == 123.123d); assertTrue(DeepEquals.deepEquals(in.readTag(in.readIn()), da) ); Object meRead = in.readObject(); assertTrue(DeepEquals.deepEquals(meRead, me) ); MBPrinter.printMessage(me, System.out); final String name = "tagtest.minbin"; final byte[] bytez = out.getBytez(); writeTmp(name, bytez); } @Test public void jsTest() { MBOut out = new MBOut(); MBSequence sequence = new MBSequence("aSeqType") .add("1",2,3,4,"fünf",6,7); MBObject ob = new MBObject("myType") .put("prename", "Ruediger") .put("name", "Moeller") .put("nüll", null) .put("misc", new int[]{7, 16, 45}) .put("test", 13) .put("floatval", 1.234f) .put("doubleval", 1.234567d) .put("seField", sequence); out.writeTag(ob); MBIn in = new MBIn(out.getBytez(),0); Object res = in.readTag(in.readIn()); MBPrinter.printMessage(ob,System.out); writeTmp("jstest.minbin", out.getBytez()); } private void writeTmp(String name, byte[] bytez) { new File("/tmp/jstest").mkdirs(); try { FileOutputStream fout = new FileOutputStream("/tmp/jstest/"+ name); fout.write(bytez); fout.close(); } catch (IOException e) { e.printStackTrace(); } } public static class ARecord implements Serializable { String name; String profession; int postalCode; public ARecord(String name, String profession, int postalCode) { this.name = name; this.profession = profession; this.postalCode = postalCode; } } public static class MinBinDemo implements Serializable { HashMap aMap; List aList; int i[] = {1,2,3}; public MinBinDemo() { aMap = new HashMap(); aMap.put("x", new ARecord("Heinz","butcher",56555)); aMap.put("xy", new ARecord("Daphne","unknwon",43355)); aList = new ArrayList<>(); aList.add(aMap); aList.add("Second Item"); } } @Test public void demo() { FSTConfiguration conf = FSTConfiguration.createMinBinConfiguration(); conf.registerCrossPlatformClassMappingUseSimpleName( Arrays.asList( (Class)MinBinDemo.class, (Class)ARecord.class )); new MBPrinter().printMessage(conf.asByteArray(new MinBinDemo())); } @Test public void primitiveTest() { MBOut out = new MBOut(); out.writeInt(MinBin.INT_8,Byte.MAX_VALUE); out.writeInt(MinBin.INT_8,Byte.MIN_VALUE); out.writeInt(MinBin.CHAR, Character.MIN_VALUE); out.writeInt(MinBin.CHAR, Character.MAX_VALUE); out.writeInt(MinBin.INT_16,Short.MIN_VALUE); out.writeInt(MinBin.INT_16,Short.MAX_VALUE); out.writeInt(MinBin.INT_32,Integer.MIN_VALUE); out.writeInt(MinBin.INT_32,Integer.MAX_VALUE); out.writeInt(MinBin.INT_64,Long.MIN_VALUE); out.writeInt(MinBin.INT_64,Long.MAX_VALUE); int[] primitiveArray = {1, 2, 3, 4, 5, 6, 7, Integer.MIN_VALUE, Integer.MAX_VALUE}; out.writeArray(primitiveArray,0,primitiveArray.length); MBIn in = new MBIn(out.getBytez(),0); System.out.println(in.readInt()); System.out.println(in.readInt()); System.out.println(in.readInt()); System.out.println(in.readInt()); System.out.println(in.readInt()); System.out.println(in.readInt()); System.out.println(in.readInt()); System.out.println(in.readInt()); System.out.println(in.readInt()); System.out.println(in.readInt()); Object arr = in.readArray(); assertTrue(DeepEquals.deepEquals(arr, primitiveArray)); } }