-/*******************************************************************************\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
+/*******************************************************************************
+ * Copyright (c) 2010 Association for Decentralized Information Management in
+ * Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
package org.simantics.databoard.tests;
-import static org.junit.Assert.assertEquals;\r
-import static org.junit.Assert.assertFalse;\r
-import static org.junit.Assert.assertNull;\r
-import static org.junit.Assert.assertTrue;\r
-import gnu.trove.map.hash.TObjectIntHashMap;\r
-\r
-import java.io.File;\r
-import java.net.InetAddress;\r
-import java.util.HashMap;\r
-import java.util.LinkedList;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Random;\r
-import java.util.TreeMap;\r
-import java.util.TreeSet;\r
-\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import org.simantics.databoard.Accessors;\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.databoard.Datatypes;\r
-import org.simantics.databoard.accessor.Accessor;\r
-import org.simantics.databoard.accessor.ArrayAccessor;\r
-import org.simantics.databoard.accessor.BooleanAccessor;\r
-import org.simantics.databoard.accessor.ByteAccessor;\r
-import org.simantics.databoard.accessor.DoubleAccessor;\r
-import org.simantics.databoard.accessor.FloatAccessor;\r
-import org.simantics.databoard.accessor.IntegerAccessor;\r
-import org.simantics.databoard.accessor.LongAccessor;\r
-import org.simantics.databoard.accessor.MapAccessor;\r
-import org.simantics.databoard.accessor.OptionalAccessor;\r
-import org.simantics.databoard.accessor.RecordAccessor;\r
-import org.simantics.databoard.accessor.StringAccessor;\r
-import org.simantics.databoard.accessor.UnionAccessor;\r
-import org.simantics.databoard.accessor.VariantAccessor;\r
-import org.simantics.databoard.accessor.error.AccessorException;\r
-import org.simantics.databoard.accessor.event.Event;\r
-import org.simantics.databoard.accessor.event.InvalidatedEvent;\r
-import org.simantics.databoard.accessor.file.FileVariantAccessor;\r
-import org.simantics.databoard.accessor.impl.ChangeSet;\r
-import org.simantics.databoard.accessor.impl.CompositeRecord;\r
-import org.simantics.databoard.accessor.impl.DirectoryMap;\r
-import org.simantics.databoard.accessor.impl.EventCollection;\r
-import org.simantics.databoard.accessor.interestset.InterestSet;\r
-import org.simantics.databoard.accessor.wire.WireClient;\r
-import org.simantics.databoard.accessor.wire.WireServer;\r
-import org.simantics.databoard.adapter.AdaptException;\r
-import org.simantics.databoard.binding.ArrayBinding;\r
-import org.simantics.databoard.binding.Binding;\r
-import org.simantics.databoard.binding.BooleanBinding;\r
-import org.simantics.databoard.binding.ByteBinding;\r
-import org.simantics.databoard.binding.DoubleBinding;\r
-import org.simantics.databoard.binding.FloatBinding;\r
-import org.simantics.databoard.binding.IntegerBinding;\r
-import org.simantics.databoard.binding.LongBinding;\r
-import org.simantics.databoard.binding.MapBinding;\r
-import org.simantics.databoard.binding.OptionalBinding;\r
-import org.simantics.databoard.binding.RecordBinding;\r
-import org.simantics.databoard.binding.StringBinding;\r
-import org.simantics.databoard.binding.UnionBinding;\r
-import org.simantics.databoard.binding.VariantBinding;\r
-import org.simantics.databoard.binding.factory.BindingScheme;\r
-import org.simantics.databoard.binding.factory.MutableBindingFactory;\r
-import org.simantics.databoard.binding.impl.ObjectArrayBinding;\r
-import org.simantics.databoard.binding.mutable.MutableVariant;\r
-import org.simantics.databoard.binding.util.RandomValue;\r
-import org.simantics.databoard.method.Client;\r
-import org.simantics.databoard.method.Server;\r
-import org.simantics.databoard.serialization.Serializer;\r
-import org.simantics.databoard.type.Datatype;\r
-import org.simantics.databoard.type.UnionType;\r
-import org.simantics.databoard.util.binary.BinaryMemory;\r
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import gnu.trove.map.hash.TObjectIntHashMap;
+
+import java.io.File;
+import java.net.InetAddress;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.simantics.databoard.Accessors;
+import org.simantics.databoard.Bindings;
+import org.simantics.databoard.Datatypes;
+import org.simantics.databoard.accessor.Accessor;
+import org.simantics.databoard.accessor.ArrayAccessor;
+import org.simantics.databoard.accessor.BooleanAccessor;
+import org.simantics.databoard.accessor.ByteAccessor;
+import org.simantics.databoard.accessor.DoubleAccessor;
+import org.simantics.databoard.accessor.FloatAccessor;
+import org.simantics.databoard.accessor.IntegerAccessor;
+import org.simantics.databoard.accessor.LongAccessor;
+import org.simantics.databoard.accessor.MapAccessor;
+import org.simantics.databoard.accessor.OptionalAccessor;
+import org.simantics.databoard.accessor.RecordAccessor;
+import org.simantics.databoard.accessor.StringAccessor;
+import org.simantics.databoard.accessor.UnionAccessor;
+import org.simantics.databoard.accessor.VariantAccessor;
+import org.simantics.databoard.accessor.error.AccessorException;
+import org.simantics.databoard.accessor.event.Event;
+import org.simantics.databoard.accessor.event.InvalidatedEvent;
+import org.simantics.databoard.accessor.file.FileVariantAccessor;
+import org.simantics.databoard.accessor.impl.ChangeSet;
+import org.simantics.databoard.accessor.impl.CompositeRecord;
+import org.simantics.databoard.accessor.impl.DirectoryMap;
+import org.simantics.databoard.accessor.impl.EventCollection;
+import org.simantics.databoard.accessor.interestset.InterestSet;
+import org.simantics.databoard.accessor.wire.WireClient;
+import org.simantics.databoard.accessor.wire.WireServer;
+import org.simantics.databoard.adapter.AdaptException;
+import org.simantics.databoard.binding.ArrayBinding;
+import org.simantics.databoard.binding.Binding;
+import org.simantics.databoard.binding.BooleanBinding;
+import org.simantics.databoard.binding.ByteBinding;
+import org.simantics.databoard.binding.DoubleBinding;
+import org.simantics.databoard.binding.FloatBinding;
+import org.simantics.databoard.binding.IntegerBinding;
+import org.simantics.databoard.binding.LongBinding;
+import org.simantics.databoard.binding.MapBinding;
+import org.simantics.databoard.binding.OptionalBinding;
+import org.simantics.databoard.binding.RecordBinding;
+import org.simantics.databoard.binding.StringBinding;
+import org.simantics.databoard.binding.UnionBinding;
+import org.simantics.databoard.binding.VariantBinding;
+import org.simantics.databoard.binding.factory.BindingScheme;
+import org.simantics.databoard.binding.factory.MutableBindingFactory;
+import org.simantics.databoard.binding.impl.ObjectArrayBinding;
+import org.simantics.databoard.binding.mutable.MutableVariant;
+import org.simantics.databoard.binding.util.RandomValue;
+import org.simantics.databoard.method.Client;
+import org.simantics.databoard.method.Server;
+import org.simantics.databoard.serialization.Serializer;
+import org.simantics.databoard.type.Datatype;
+import org.simantics.databoard.type.UnionType;
+import org.simantics.databoard.util.binary.BinaryMemory;
/**
* o Set Value
public class TestAccessor {
RandomValue rv;
- Map<Datatype, Binding> repository;\r
- BindingScheme scheme;\r
+ Map<Datatype, Binding> repository;
+ BindingScheme scheme;
/////////////////////////////////////
- public @Before void init() {\r
- rv = new RandomValue();\r
- repository = new HashMap<Datatype, Binding>();\r
- scheme = new MutableBindingFactory( repository );\r
+ public @Before void init() {
+ rv = new RandomValue();
+ repository = new HashMap<Datatype, Binding>();
+ scheme = new MutableBindingFactory( repository );
+ }
+
+ public static File createTmpDir()
+ {
+ String tmp = System.getenv("tmp");
+ if (tmp==null) tmp = "c:/temp";
+ Random r = new Random();
+ String randomName = "tmp-"+(r.nextInt(10000)+10000);
+ File tmpDir = new File(tmp+"/"+randomName);
+ Boolean ok = tmpDir.mkdirs();
+ assertTrue( ok );
+ return tmpDir;
+ }
+
+ public boolean isKeyShortEnough(Binding binding, Object value) throws AdaptException {
+ String key = (String) Bindings.adapt(value, binding, Bindings.STR_VARIANT);
+ return key.length()<=200;
+ }
+
+ public @Test void testWireAccessor() throws Exception {
+ System.out.println("Wire accessor test");
+
+ // TODO: Fix this!
+ if (true) return;
+
+ for (int i=0; i<10000; i++) {
+ Bindings.defaultBindingRepository.clear();
+ Bindings.bindingRepository.clear();
+ Bindings.serializerRepository.clear();
+ repository.clear();
+ System.out.println(i+": ");
+ rv = new RandomValue(i);
+ rv.refereableRecords = false;
+ Datatype type = rv.randomType(0, 3);
+ Binding binding = scheme.getBindingUnchecked(type);
+ Object instance = binding.accept(rv);
+// System.out.println(binding.printValue(instance, true));
+ Accessor accessor = Accessors.getAccessor(binding, instance);
+
+ WireServer wireServer = new WireServer(accessor);
+ Server server = new Server(0, wireServer.getMethodInterface());
+ WireClient wireClient = new WireClient();
+ Client client = new Client(InetAddress.getByName("localhost"), server.getPort(), wireClient.getClientMethodInterface());
+ wireClient.setServerMethodInterface(client.getConnection().getRemoteMethodInterface());
+ Accessor remoteAccessor = (Accessor) wireClient.getAccessor(null);
+ testAccessor( remoteAccessor, false );
+
+ wireClient.close();
+ client.close();
+ server.close();
+ }
+
+ }
+
+ public @Test void testBinaryAccessor() throws Exception {
+ System.out.println("Test Binary Memory:");
+
+ Datatype type = Datatypes.VARIANT;
+ Binding binding = scheme.getBindingUnchecked( type );
+ Serializer s = binding.serializer();
+ TObjectIntHashMap<Object> identities = new TObjectIntHashMap<Object>();
+
+ for (int i=0; i<10000; i++) {
+ Bindings.defaultBindingRepository.clear();
+ Bindings.bindingRepository.clear();
+ Bindings.serializerRepository.clear();
+ repository.clear();
+ rv = new RandomValue(i);
+ rv.getRandom().nextLong();
+ rv.refereableRecords = false;
+ System.out.println(i+": ");
+ BinaryMemory ram = new BinaryMemory(0);
+ Object instance = binding.accept(rv);
+
+ binding.assertInstaceIsValid(instance);
+// System.out.println(instance);
+
+ identities.clear();
+ int size = s.getSize(instance, identities);
+
+ ram.setLength(size);
+ ram.position(0);
+ identities.clear();
+ s.serialize(ram, identities, instance);
+ identities.clear();
+
+ ram.position(0L);
+ Object instance2 = s.deserialize(ram);
+ assertTrue( binding.equals(instance, instance2) );
+ binding.assertInstaceIsValid(instance2);
+
+ VariantAccessor a = (VariantAccessor) Accessors.getAccessor(ram, type);
+
+ testAccessor(a);
+
+ }
+
}
-\r
- public static File createTmpDir()\r
- {\r
- String tmp = System.getenv("tmp");\r
- if (tmp==null) tmp = "c:/temp";\r
- Random r = new Random();\r
- String randomName = "tmp-"+(r.nextInt(10000)+10000);\r
- File tmpDir = new File(tmp+"/"+randomName);\r
- Boolean ok = tmpDir.mkdirs();\r
- assertTrue( ok );\r
- return tmpDir;\r
- } \r
-\r
- public boolean isKeyShortEnough(Binding binding, Object value) throws AdaptException {\r
- String key = (String) Bindings.adapt(value, binding, Bindings.STR_VARIANT); \r
- return key.length()<=200;\r
- }\r
-\r
- public @Test void testWireAccessor() throws Exception {\r
- System.out.println("Wire accessor test");\r
- \r
- // TODO: Fix this!\r
- if (true) return;\r
-\r
- for (int i=0; i<10000; i++) {\r
- Bindings.defaultBindingRepository.clear();\r
- Bindings.bindingRepository.clear();\r
- Bindings.serializerRepository.clear();\r
- repository.clear();\r
- System.out.println(i+": ");\r
- rv = new RandomValue(i); \r
- rv.refereableRecords = false;\r
- Datatype type = rv.randomType(0, 3);\r
- Binding binding = scheme.getBindingUnchecked(type);\r
- Object instance = binding.accept(rv);\r
-// System.out.println(binding.printValue(instance, true));\r
- Accessor accessor = Accessors.getAccessor(binding, instance);\r
- \r
- WireServer wireServer = new WireServer(accessor);\r
- Server server = new Server(0, wireServer.getMethodInterface());\r
- WireClient wireClient = new WireClient();\r
- Client client = new Client(InetAddress.getByName("localhost"), server.getPort(), wireClient.getClientMethodInterface());\r
- wireClient.setServerMethodInterface(client.getConnection().getRemoteMethodInterface());\r
- Accessor remoteAccessor = (Accessor) wireClient.getAccessor(null);\r
- testAccessor( remoteAccessor, false );\r
- \r
- wireClient.close();\r
- client.close();\r
- server.close();\r
- }\r
- \r
- }\r
- \r
- public @Test void testBinaryAccessor() throws Exception {\r
- System.out.println("Test Binary Memory:");\r
- \r
- Datatype type = Datatypes.VARIANT;\r
- Binding binding = scheme.getBindingUnchecked( type );\r
- Serializer s = binding.serializer();\r
- TObjectIntHashMap<Object> identities = new TObjectIntHashMap<Object>();\r
- \r
- for (int i=0; i<10000; i++) {\r
- Bindings.defaultBindingRepository.clear();\r
- Bindings.bindingRepository.clear();\r
- Bindings.serializerRepository.clear(); \r
- repository.clear(); \r
- rv = new RandomValue(i); \r
- rv.getRandom().nextLong();\r
- rv.refereableRecords = false;\r
- System.out.println(i+": ");\r
- BinaryMemory ram = new BinaryMemory(0);\r
- Object instance = binding.accept(rv);\r
- \r
- binding.assertInstaceIsValid(instance);\r
-// System.out.println(instance);\r
- \r
- identities.clear();\r
- int size = s.getSize(instance, identities);\r
- \r
- ram.setLength(size); \r
- ram.position(0);\r
- identities.clear();\r
- s.serialize(ram, identities, instance);\r
- identities.clear();\r
-\r
- ram.position(0L);\r
- Object instance2 = s.deserialize(ram);\r
- assertTrue( binding.equals(instance, instance2) );\r
- binding.assertInstaceIsValid(instance2);\r
- \r
- VariantAccessor a = (VariantAccessor) Accessors.getAccessor(ram, type);\r
- \r
- testAccessor(a);\r
- \r
- }\r
- \r
- }\r
-\r
- \r
- public @Test void testJavaAccessor() throws Exception {\r
- System.out.println("Test Java Objects:");\r
- for (int i=0; i<10000; i++) {\r
- Bindings.defaultBindingRepository.clear();\r
- Bindings.bindingRepository.clear();\r
- Bindings.serializerRepository.clear();\r
- repository.clear(); \r
- System.out.println(i+": ");\r
- rv = new RandomValue(i); \r
- rv.refereableRecords = false;\r
- Datatype type = rv.randomType(0, 3);\r
- Binding binding = scheme.getBindingUnchecked(type);\r
- Object instance = binding.accept(rv);\r
-// System.out.println(binding.printValue(instance, true));\r
- Accessor accessor = Accessors.getAccessor(binding, instance);\r
- testAccessor(accessor);\r
- }\r
- } \r
-\r
- /**\r
- * This test tests composite record by adding 10 fields, and running the \r
- * composition as a record accessor\r
- */\r
- public @Test void testCompositeRecord() throws Exception {\r
- System.out.println("Test composite accessor");\r
- for (int i=0; i<100; i++) {\r
- CompositeRecord record = new CompositeRecord();\r
- for (int j=1; j<=10; j++) {\r
- \r
- Binding binding = Bindings.MUTABLE_VARIANT;\r
- rv = new RandomValue(i*543+j*23); \r
- rv.getRandom().nextLong();\r
- rv.refereableRecords = false; \r
- MutableVariant instance = (MutableVariant) binding.accept(rv);\r
- String fieldName = "Field"+j;\r
- Accessor fa = Accessors.getAccessor(instance.getBinding(), instance.getValue());\r
- record.addField(fieldName, fa);\r
- }\r
- System.out.println(i);\r
- \r
- testAccessor( record );\r
- }\r
- }\r
- \r
- \r
- public @Test void testFolderMap() throws Exception {\r
- // 1000 tests proves failure\r
- for (int i=0; i<100; i++) {\r
- Bindings.defaultBindingRepository.clear();\r
- Bindings.bindingRepository.clear();\r
- Bindings.serializerRepository.clear();\r
- repository.clear();\r
- \r
- System.out.println(i+": ");\r
- File dir = createTmpDir();\r
- DirectoryMap map = Accessors.openDirectory(dir);\r
- Binding keyBinding = Bindings.STR_VARIANT; \r
- try {\r
- System.out.println("Test Folder Map: "+dir); \r
- \r
- // Create 10 files\r
- for (int j=0; j<10; j++) {\r
- rv = new RandomValue(i*231231243+j*213); \r
- rv.refereableRecords = false;\r
- \r
- // Create Key \r
- String key = "";\r
- do {\r
- key = (String) keyBinding.accept(rv);\r
- } while (key.length() > 240);\r
- \r
- // Create value \r
- Datatype valueType = rv.randomType(0, 2); \r
- Binding valueBinding = scheme.getBindingUnchecked(valueType);\r
- Object value = valueBinding.accept(rv); \r
-\r
- System.out.println(key);\r
- MutableVariant vv = new MutableVariant(valueBinding, value);\r
- map.put(Bindings.STR_VARIANT, key, Bindings.MUTABLE_VARIANT, vv);\r
- }\r
- \r
- // Test the map\r
- testAccessor(map);\r
- \r
- } finally {\r
- // Remove all files in the folder\r
- map.clear();\r
- map.close();\r
- System.out.println( dir.listFiles().length + " files.");\r
- dir.delete();\r
- }\r
- \r
- }\r
- \r
- } \r
+
+
+ public @Test void testJavaAccessor() throws Exception {
+ System.out.println("Test Java Objects:");
+ for (int i=0; i<10000; i++) {
+ Bindings.defaultBindingRepository.clear();
+ Bindings.bindingRepository.clear();
+ Bindings.serializerRepository.clear();
+ repository.clear();
+ System.out.println(i+": ");
+ rv = new RandomValue(i);
+ rv.refereableRecords = false;
+ Datatype type = rv.randomType(0, 3);
+ Binding binding = scheme.getBindingUnchecked(type);
+ Object instance = binding.accept(rv);
+// System.out.println(binding.printValue(instance, true));
+ Accessor accessor = Accessors.getAccessor(binding, instance);
+ testAccessor(accessor);
+ }
+ }
+
+ /**
+ * This test tests composite record by adding 10 fields, and running the
+ * composition as a record accessor
+ */
+ public @Test void testCompositeRecord() throws Exception {
+ System.out.println("Test composite accessor");
+ for (int i=0; i<100; i++) {
+ CompositeRecord record = new CompositeRecord();
+ for (int j=1; j<=10; j++) {
+
+ Binding binding = Bindings.MUTABLE_VARIANT;
+ rv = new RandomValue(i*543+j*23);
+ rv.getRandom().nextLong();
+ rv.refereableRecords = false;
+ MutableVariant instance = (MutableVariant) binding.accept(rv);
+ String fieldName = "Field"+j;
+ Accessor fa = Accessors.getAccessor(instance.getBinding(), instance.getValue());
+ record.addField(fieldName, fa);
+ }
+ System.out.println(i);
+
+ testAccessor( record );
+ }
+ }
+
+
+ public @Test void testFolderMap() throws Exception {
+ // 1000 tests proves failure
+ for (int i=0; i<100; i++) {
+ Bindings.defaultBindingRepository.clear();
+ Bindings.bindingRepository.clear();
+ Bindings.serializerRepository.clear();
+ repository.clear();
+
+ System.out.println(i+": ");
+ File dir = createTmpDir();
+ DirectoryMap map = Accessors.openDirectory(dir);
+ Binding keyBinding = Bindings.STR_VARIANT;
+ try {
+ System.out.println("Test Folder Map: "+dir);
+
+ // Create 10 files
+ for (int j=0; j<10; j++) {
+ rv = new RandomValue(i*231231243+j*213);
+ rv.refereableRecords = false;
+
+ // Create Key
+ String key = "";
+ do {
+ key = (String) keyBinding.accept(rv);
+ } while (key.length() > 240);
+
+ // Create value
+ Datatype valueType = rv.randomType(0, 2);
+ Binding valueBinding = scheme.getBindingUnchecked(valueType);
+ Object value = valueBinding.accept(rv);
+
+ System.out.println(key);
+ MutableVariant vv = new MutableVariant(valueBinding, value);
+ map.put(Bindings.STR_VARIANT, key, Bindings.MUTABLE_VARIANT, vv);
+ }
+
+ // Test the map
+ testAccessor(map);
+
+ } finally {
+ // Remove all files in the folder
+ map.clear();
+ map.close();
+ System.out.println( dir.listFiles().length + " files.");
+ dir.delete();
+ }
+
+ }
+
+ }
public @Test void testBinaryFile() throws Exception {
File tmpFile = File.createTempFile("TestAccessor", ".dat");
Binding binding = scheme.getBindingUnchecked( type );
for (int i=0; i<10000; i++) {
- Bindings.bindingRepository.clear();\r
- Bindings.serializerRepository.clear();\r
- Bindings.defaultBindingRepository.clear();\r
- repository.clear();\r
- \r
+ Bindings.bindingRepository.clear();
+ Bindings.serializerRepository.clear();
+ Bindings.defaultBindingRepository.clear();
+ repository.clear();
+
System.out.println(i+": ");
rv = new RandomValue(i);
rv.getRandom().nextLong();
fa.close();
}
- \r
+
/////////////////////////////////////
-\r
- public void testAccessor(Accessor a) throws Exception {\r
- testAccessor(a, true);\r
- }\r
+
+ public void testAccessor(Accessor a) throws Exception {
+ testAccessor(a, true);
+ }
public void testAccessor(Accessor a, boolean runTypeSpecific) throws Exception {
// Init
// Original value and test value
Object origValue = a.getValue(binding);
binding.assertInstaceIsValid(origValue);
- Object testValue = binding.accept(rv);\r
-\r
- // Test Accessor#getValue(binding, instance);\r
- Binding mutableBinding = Bindings.getMutableBinding(type);\r
- Object mutableInstance = mutableBinding.createDefault();\r
- a.getValue(mutableBinding, mutableInstance);\r
- assertTrue( Bindings.equals(binding, origValue, mutableBinding, mutableInstance) );\r
+ Object testValue = binding.accept(rv);
+
+ // Test Accessor#getValue(binding, instance);
+ Binding mutableBinding = Bindings.getMutableBinding(type);
+ Object mutableInstance = mutableBinding.createDefault();
+ a.getValue(mutableBinding, mutableInstance);
+ assertTrue( Bindings.equals(binding, origValue, mutableBinding, mutableInstance) );
boolean same = binding.equals(origValue, testValue);
// Create a reference value and an accessor
assertTrue( binding.equals(x, testValue) );
// Revert reference value to origValue using rollback
- a.removeListener(cs);\r
+ a.removeListener(cs);
a.apply(rollback, null); // Apply transformation from testValue to origValue
x = a.getValue(binding);
assertTrue( binding.equals( x, origValue ) );
}
// Ensure the accessor has the correct value
- Object x = a.getValue(binding);\r
- assertTrue( binding.equals( x, origValue) );\r
- \r
- if (runTypeSpecific) {\r
+ Object x = a.getValue(binding);
+ assertTrue( binding.equals( x, origValue) );
+
+ if (runTypeSpecific) {
// Type specific tests
if (a instanceof ArrayAccessor) testArrayAccessor((ArrayAccessor) a);
if (a instanceof RecordAccessor) testRecordAccessor((RecordAccessor) a);
// Ensure the accessor has the correct value
a.setValue(binding, origValue);
- x = a.getValue(binding);\r
- assertTrue( binding.equals( x, origValue) );\r
+ x = a.getValue(binding);
+ assertTrue( binding.equals( x, origValue) );
}
}
Object oks[] = new Object[ len ];
Object ovs[] = new Object[ len ];
a.getAll(kb, vb, oks, ovs);
-\r
+
// getAll(Binding, Binding, Map<Object, Object>)
TreeMap<Object, Object> om = new TreeMap<Object, Object>(kb);
a.getAll(kb, vb, om);
assertTrue( vb.equals( v, ovs[i] ) );
assertTrue( vb.equals( v, ovs2[i] ) );
}
-\r
- // Test Get entries\r
- if (len>2) {\r
- // Get all\r
- try {\r
- Object keys[] = new Object[ len ];\r
- Object values[] = new Object[ len ];\r
- int c = a.getEntries(kb, a.getFirstKey(kb), true, a.getLastKey(kb), true, \r
- new ObjectArrayBinding(kb), keys, \r
- new ObjectArrayBinding(vb), values, -1);\r
- \r
- assertEquals(len, c);\r
- for (int i=0; i<len; i++) { \r
- assertTrue( kb.equals( oks[i], keys[i] ) );\r
- assertTrue( vb.equals( ovs[i], values[i] ) );\r
- }\r
- \r
- // Exclude first and last\r
- keys = new Object[ len-2 ];\r
- values = new Object[ len-2 ];\r
- c = a.getEntries(kb, a.getFirstKey(kb), false, a.getLastKey(kb), false, \r
- new ObjectArrayBinding(kb), keys, \r
- new ObjectArrayBinding(vb), values, -1);\r
- assertEquals(len-2, c);\r
- for (int i=1; i<len-1; i++) { \r
- assertTrue( kb.equals( oks[i], keys[i-1] ) );\r
- assertTrue( vb.equals( ovs[i], values[i-1] ) );\r
- }\r
- \r
- // Get one\r
- c = a.getEntries(kb, a.getFirstKey(kb), true, a.getLastKey(kb), false, \r
- new ObjectArrayBinding(kb), keys, \r
- new ObjectArrayBinding(vb), values, 1);\r
- assertEquals(1, c);\r
- assertTrue( kb.equals( oks[0], keys[0] ) );\r
- assertTrue( vb.equals( ovs[0], values[0] ) );\r
- }\r
- catch (AccessorException e) {\r
- assertEquals( "Not implemented", e.getMessage() );\r
- }\r
- \r
+
+ // Test Get entries
+ if (len>2) {
+ // Get all
+ try {
+ Object keys[] = new Object[ len ];
+ Object values[] = new Object[ len ];
+ int c = a.getEntries(kb, a.getFirstKey(kb), true, a.getLastKey(kb), true,
+ new ObjectArrayBinding(kb), keys,
+ new ObjectArrayBinding(vb), values, -1);
+
+ assertEquals(len, c);
+ for (int i=0; i<len; i++) {
+ assertTrue( kb.equals( oks[i], keys[i] ) );
+ assertTrue( vb.equals( ovs[i], values[i] ) );
+ }
+
+ // Exclude first and last
+ keys = new Object[ len-2 ];
+ values = new Object[ len-2 ];
+ c = a.getEntries(kb, a.getFirstKey(kb), false, a.getLastKey(kb), false,
+ new ObjectArrayBinding(kb), keys,
+ new ObjectArrayBinding(vb), values, -1);
+ assertEquals(len-2, c);
+ for (int i=1; i<len-1; i++) {
+ assertTrue( kb.equals( oks[i], keys[i-1] ) );
+ assertTrue( vb.equals( ovs[i], values[i-1] ) );
+ }
+
+ // Get one
+ c = a.getEntries(kb, a.getFirstKey(kb), true, a.getLastKey(kb), false,
+ new ObjectArrayBinding(kb), keys,
+ new ObjectArrayBinding(vb), values, 1);
+ assertEquals(1, c);
+ assertTrue( kb.equals( oks[0], keys[0] ) );
+ assertTrue( vb.equals( ovs[0], values[0] ) );
+ }
+ catch (AccessorException e) {
+ assertEquals( "Not implemented", e.getMessage() );
+ }
+
}
// Create test values
TreeSet<Object> keys = new TreeSet<Object>(kb);
- for (int i=0; i<10; i++) {\r
- Object key = null;\r
- if (kb.type().equals(Datatypes.VARIANT)) {\r
- do {\r
- key = kb.accept(rv);\r
- } while( !kb.type().equals(Datatypes.VARIANT) || !isKeyShortEnough(kb, key) ); \r
- } else {\r
- key = kb.accept(rv); \r
- }\r
- keys.add( key );\r
+ for (int i=0; i<10; i++) {
+ Object key = null;
+ if (kb.type().equals(Datatypes.VARIANT)) {
+ do {
+ key = kb.accept(rv);
+ } while( !kb.type().equals(Datatypes.VARIANT) || !isKeyShortEnough(kb, key) );
+ } else {
+ key = kb.accept(rv);
+ }
+ keys.add( key );
}
int testValueCount = keys.size();
Object tks[] = keys.toArray( new Object[testValueCount] );
assertTrue( kb.equals(fk, oks[0]) );
// getLastKey(Binding)
- Object lk = a.getLastKey(kb);\r
+ Object lk = a.getLastKey(kb);
assertTrue( kb.equals(lk, oks[len-1]) );
// getLowerKey(Binding, Object)
Object k = a.getLowerKey(kb, fk);
- assertNull(k); \r
+ assertNull(k);
k = a.getLowerKey(kb, lk);
assertTrue( kb.equals(k, oks[len-2]) );
assertTrue( kb.equals(k, oks[0]) );
// getHigherKey(Binding, Object)
- k = a.getHigherKey(kb, lk);\r
+ k = a.getHigherKey(kb, lk);
assertNull(k);
k = a.getHigherKey(kb, fk);
assertTrue( kb.equals(k, oks[1]) );
// clear
// putAll(Binding, Binding, Object[], Object[])
a.clear();
- int size = a.size();\r
+ int size = a.size();
assertEquals( 0, size );
- a.putAll(kb, vb, oks, ovs);\r
- size = a.size(); \r
+ a.putAll(kb, vb, oks, ovs);
+ size = a.size();
assertEquals( len, size );
// clear
Object o1 = a.get(i + len, cb);
Object o2 = tvs[i];
assertTrue( cb.equals(o1, o2) );
- }\r
+ }
- // Test get to existing instance\r
- {\r
- Object o1 = cb.createDefault();\r
- for (int i=0; i<testValueCount; i++) {\r
- a.get(i + len, cb, o1);\r
- Object o2 = tvs[i];\r
- assertTrue( cb.equals(o1, o2) );\r
- }\r
- }\r
-\r
+ // Test get to existing instance
+ {
+ Object o1 = cb.createDefault();
+ for (int i=0; i<testValueCount; i++) {
+ a.get(i + len, cb, o1);
+ Object o2 = tvs[i];
+ assertTrue( cb.equals(o1, o2) );
+ }
+ }
+
// Test getAll
Object all[] = new Object[ testValueCount + len ];
a.getAll(cb, all);
}
a.remove(0, testValueCount);
assertEquals(len, a.size());
- }\r
- \r
- int oldSize = a.size();\r
- a.setSize( oldSize + 10);\r
- assertEquals( oldSize+10, a.size() );\r
+ }
+
+ int oldSize = a.size();
+ a.setSize( oldSize + 10);
+ assertEquals( oldSize+10, a.size() );
a.setSize( oldSize );
- assertEquals( oldSize, a.size() );\r
+ assertEquals( oldSize, a.size() );
//// Test setValue()
int common = Math.min(len, testValueCount);
- for (int i=0; i<common; i++) \r
- a.set(i, cb, tvs[i]);\r
+ for (int i=0; i<common; i++)
+ a.set(i, cb, tvs[i]);
for (int i=0; i<common; i++) assertTrue( cb.equals( tvs[i], a.get(i, cb)) );
for (int i=0; i<common; i++) a.set(i, cb, ovs[i]);
tvs2[i] = cbs[i].accept(rv);
}
- //// Test setValue()\r
+ //// Test setValue()
// System.gc();
- for (int i=0; i<len; i++) \r
+ for (int i=0; i<len; i++)
a.setFieldValue(i, cbs[i], tvs[i]);
for (int i=0; i<len; i++) assertTrue( cbs[i].equals( tvs[i], a.getFieldValue(i, cbs[i])) );
for (int i=0; i<len; i++) a.setFieldValue(i, cbs[i], ovs[i]);
- for (int i=0; i<len; i++) assertTrue( cbs[i].equals( ovs[i], a.getFieldValue(i, cbs[i])) );\r
+ for (int i=0; i<len; i++) assertTrue( cbs[i].equals( ovs[i], a.getFieldValue(i, cbs[i])) );
//// Test sub-accessors with recursion
for (int i=0; i<len; i++) {