--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2010 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.databoard.tests;
+
+import java.util.Arrays;\r
+\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.databoard.Datatypes;\r
+import org.simantics.databoard.annotations.Length;\r
+import org.simantics.databoard.annotations.Optional;\r
+import org.simantics.databoard.annotations.Range;\r
+import org.simantics.databoard.annotations.Unit;\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.databoard.parser.repository.DataValueRepository;\r
+import org.simantics.databoard.serialization.Serializer;\r
+import org.simantics.databoard.type.Datatype;\r
+
+public class TestAsciiSerialization {
+
+ public static class RGB {
+
+ public RGB() {}
+ public RGB(String colorName, int r, int g, int b)
+ {
+ this.name = colorName;
+ this.r = r;
+ this.g = g;
+ this.b = b;
+ }
+
+ @Unit("red")
+ public int r;
+ public int g;
+ public int b;
+ public String name;
+ public int[] data;
+
+ @Override
+ public String toString() {
+ return name+"={r="+r+", g="+g+", b="+b+"}";
+ }
+
+ }
+ public static class Image {
+ @Length({"320", "240"})
+ public RGB[][] pixels;
+ }
+
+// @Recursive
+ public class TestClass {
+ public TestClass() {}
+
+// @Max("5")
+// @Min("0")
+
+ @Optional Integer X;
+ String Y;
+
+ @Length("5") @Range("[0..100]") int[] a;
+
+//
+// float[][][] b;
+//
+// TestArray[] c;
+//
+// @Unit("m")
+// double length;
+//
+// public static void main(String[] args) throws Exception {
+// System.out.println(DataTypes.getDataType(TestArray.class));
+//
+// }
+ }
+
+ public static class VectorSeries {
+ public VectorSeries() {}
+ @Optional Vector v1;
+ @Optional Vector v2;
+ @Optional Vector v3;
+ }
+
+ public static class Vector { int x, y, z; }
+
+ public static void main(String[] args) throws Exception {
+
+ DataValueRepository vr = new DataValueRepository();
+ Binding datatypeBinding = Bindings.getBindingUnchecked( Datatype.class );
+
+ Datatype vectorType = Datatypes.getDatatypeUnchecked(Vector.class);
+ String string = datatypeBinding.printValueDefinition(vectorType, true);
+ Datatype vectorType2 = (Datatype) datatypeBinding.parseValueDefinition(string);
+ if (!vectorType.equals(vectorType2)) System.err.println("datatype mismatch");
+
+ VectorSeries x = new VectorSeries();
+ x.v1 = new Vector();
+ x.v2 = new Vector();
+// x.v3 = new Vector();
+ Bindings.getBinding(VectorSeries.class).printValue(x, System.out, vr, true);
+ System.out.println("\n");
+
+
+ Datatype dataType = Datatypes.getDatatype(TestClass.class);
+ Datatype testClassDataType = Datatypes.getDatatype(TestClass.class);
+
+ Binding dataTypeBinding = Bindings.getBinding(Datatype.class);
+ Serializer dataTypeSerializer = dataTypeBinding.serializer();
+
+ byte[] dada;
+
+// dada = dataTypeSerializer.serialize(testClassDataType);
+// System.out.println(Arrays.toString(dada));
+
+ System.out.println("\n");
+
+
+ System.out.println(Datatypes.<Datatype>getDatatype(TestClass.class));
+
+ dataTypeBinding.printValue(Datatypes.getDatatype(int[].class), System.out, vr, false);
+ System.out.println("\n");
+
+ dataTypeBinding.printValue(Datatypes.getDatatype(TestClass.class), System.out, vr, false);
+ System.out.println("\n");
+
+ dataTypeBinding.printValue(Datatypes.getDatatype(int.class), System.out, vr, false);
+ System.out.println("\n");
+
+
+ Bindings.getBinding(String.class).printValue("Abu\nDabi\"\\\\\"", System.out, vr, false);
+ System.out.println("\n");
+
+ Bindings.getBinding(int[].class).printValue(new int[] {1,2,3,4,5}, System.out, vr, false);
+ System.out.println("\n");
+
+// new BinaryEncoder( new byte[100] ).write(DataTypes.getBinding(int[].class), new int[] {1,2,3,4,5});
+
+ dataTypeBinding.printValue(Datatypes.getDatatype(VectorSeries.class), System.out, vr, false);
+ System.out.println("\n");
+
+ int[] array = (int[]) Bindings.getBinding(int[].class).parseValueDefinition("[1, 2, 3, 4, 5]");
+ System.out.println(Arrays.toString(array));
+ System.out.println("\n");
+
+ Integer i = (Integer) Bindings.getBinding(Integer.class).parseValueDefinition("5");
+ System.out.println(i);
+ System.out.println("\n");
+
+ Datatype dt = (Datatype) Bindings.getBinding(Datatype.class).parseValueDefinition("RecordType(False \"Vector Series\" [OptionalType(IntegerType(Nothing Nothing)) \"X\", StringType(Nothing Nothing Nothing) \"Y\", ArrayType(IntegerType(Nothing Nothing) 5 5) \"a\"])");
+
+ dataTypeBinding.printValue(dt, System.out, vr, false);
+ System.out.println("\n");
+
+ dataTypeBinding.printValue(Datatypes.getDatatype(Image.class), System.out, vr, false);
+ System.out.println("\n");
+
+ String str = (String) Bindings.getBinding(String.class).parseValueDefinition("\"Abu\nDabi\\\"\\\\\"\"");
+ System.out.println(str);
+ System.out.println("\n");
+
+
+ }
+
+}
+