]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/testcases/org/simantics/databoard/tests/TestPartialMap.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / testcases / org / simantics / databoard / tests / TestPartialMap.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007 VTT Technical Research Centre of Finland and others.\r
3  * All rights reserved. This program and the accompanying materials\r
4  * are made available under the terms of the Eclipse Public License v1.0\r
5  * which accompanies this distribution, and is available at\r
6  * http://www.eclipse.org/legal/epl-v10.html\r
7  *\r
8  * Contributors:\r
9  *     VTT Technical Research Centre of Finland - initial API and implementation\r
10  *******************************************************************************/\r
11 package org.simantics.databoard.tests;\r
12 \r
13 import junit.framework.Assert;\r
14 \r
15 import org.junit.Test;\r
16 import org.simantics.databoard.Accessors;\r
17 import org.simantics.databoard.Bindings;\r
18 import org.simantics.databoard.accessor.MapAccessor;\r
19 import org.simantics.databoard.accessor.impl.AccessorParams;\r
20 import org.simantics.databoard.accessor.java.JavaObject;\r
21 import org.simantics.databoard.binding.Binding;\r
22 import org.simantics.databoard.serialization.Serializer;\r
23 import org.simantics.databoard.type.Datatype;\r
24 import org.simantics.databoard.type.IntegerType;\r
25 import org.simantics.databoard.type.MapType;\r
26 import org.simantics.databoard.type.StringType;\r
27 import org.simantics.databoard.util.binary.BinaryMemory;\r
28 import org.simantics.databoard.util.binary.RandomAccessBinary;\r
29 \r
30 public class TestPartialMap {\r
31 \r
32         public @Test void testBinary() throws Exception {\r
33                 \r
34                 Datatype variableSizedType = new MapType( new IntegerType(), new StringType() );\r
35                 Datatype constantSizedType = new MapType( new IntegerType(), new IntegerType() );\r
36                 \r
37                 testVar( buildMemory(variableSizedType) );\r
38                 testCons( buildMemory(constantSizedType) );\r
39                 \r
40                 testVar( buildJava(variableSizedType) );\r
41                 testCons( buildJava(constantSizedType) );\r
42                 \r
43         }\r
44 \r
45         MapAccessor buildMemory(Datatype type) throws Exception {\r
46                 RandomAccessBinary m = new BinaryMemory( 0 );\r
47                 Binding binding = Bindings.getMutableBinding(type);\r
48                 Serializer s = Bindings.getSerializer(binding);\r
49                 Object instance = binding.createDefault();\r
50                 byte[] data = s.serialize(instance);\r
51                 m.write(data);\r
52                 m.position(0L);\r
53                 m.setLength(data.length);\r
54                 return Accessors.getAccessor( m, type);\r
55         }\r
56         \r
57         MapAccessor buildJava(Datatype type) throws Exception {\r
58                 Binding binding = Bindings.getMutableBinding(type);\r
59                 Object instance = binding.createDefault();\r
60                 return (MapAccessor) JavaObject.createAccessor(null, binding, instance, AccessorParams.DEFAULT);\r
61         }       \r
62         \r
63         void testVar(MapAccessor ma) throws Exception {\r
64                 Assert.assertEquals(0, ma.size());\r
65                 ma.put( Bindings.INTEGER, 0, Bindings.STRING, "0");\r
66                 Assert.assertEquals(1, ma.size());\r
67                 ma.put( Bindings.INTEGER, 2, Bindings.STRING, "2");\r
68                 Assert.assertEquals(2, ma.size());\r
69                 ma.put( Bindings.INTEGER, 4, Bindings.STRING, "4");\r
70                 Assert.assertEquals(3, ma.size());\r
71                 \r
72                 Assert.assertEquals( 0, ma.count(Bindings.INTEGER, 2, false, 2, false));\r
73                 Assert.assertEquals( 1, ma.count(Bindings.INTEGER, 1, true, 3, true));\r
74                 Assert.assertEquals( 1, ma.count(Bindings.INTEGER, 2, true, 2, true));\r
75                 \r
76                 Assert.assertEquals( 3, ma.count(Bindings.INTEGER, 0, true, 4, true));\r
77                 Assert.assertEquals( 1, ma.count(Bindings.INTEGER, 0, false, 4, false));\r
78                 Assert.assertEquals( 2, ma.count(Bindings.INTEGER, 0, true, 4, false));\r
79                 Assert.assertEquals( 2, ma.count(Bindings.INTEGER, 0, false, 4, true));         \r
80         }\r
81         \r
82         void testCons(MapAccessor ma) throws Exception {\r
83                 Assert.assertEquals(0, ma.size());\r
84                 ma.put( Bindings.INTEGER, 0, Bindings.INTEGER, 0);\r
85                 Assert.assertEquals(1, ma.size());\r
86                 ma.put( Bindings.INTEGER, 2, Bindings.INTEGER, 2);\r
87                 Assert.assertEquals(2, ma.size());\r
88                 ma.put( Bindings.INTEGER, 4, Bindings.INTEGER, 4);\r
89                 Assert.assertEquals(3, ma.size());\r
90                                 \r
91                 Assert.assertEquals( 3, ma.count(Bindings.INTEGER, 0, true, 4, true));\r
92                 Assert.assertEquals( 1, ma.count(Bindings.INTEGER, 0, false, 4, false));\r
93                 Assert.assertEquals( 2, ma.count(Bindings.INTEGER, 0, true, 4, false));\r
94                 Assert.assertEquals( 2, ma.count(Bindings.INTEGER, 0, false, 4, true));\r
95                 \r
96                 Assert.assertEquals( 0, ma.count(Bindings.INTEGER, 2, false, 2, false));\r
97                 Assert.assertEquals( 1, ma.count(Bindings.INTEGER, 1, true, 3, true));\r
98                 Assert.assertEquals( 1, ma.count(Bindings.INTEGER, 2, true, 2, true));\r
99                 \r
100         }\r
101         \r
102         \r
103 }\r
104 \r