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