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
9 * VTT Technical Research Centre of Finland - initial API and implementation
10 *******************************************************************************/
11 package org.simantics.databoard.tests;
13 import junit.framework.Assert;
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;
30 public class TestPartialMap {
32 public @Test void testBinary() throws Exception {
34 Datatype variableSizedType = new MapType( new IntegerType(), new StringType() );
35 Datatype constantSizedType = new MapType( new IntegerType(), new IntegerType() );
37 testVar( buildMemory(variableSizedType) );
38 testCons( buildMemory(constantSizedType) );
40 testVar( buildJava(variableSizedType) );
41 testCons( buildJava(constantSizedType) );
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);
53 m.setLength(data.length);
54 return Accessors.getAccessor( m, type);
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);
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());
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));
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));
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());
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));
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));