]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.databoard/testcases/org/simantics/databoard/tests/TestAccessor.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.databoard / testcases / org / simantics / databoard / tests / TestAccessor.java
index 0d0e3f3c1ed7070d9ad84334e3f9b3b26ee1aea2..80dac9240ee7fa7cdacdb46e418bc84987f0419a 100644 (file)
@@ -1,88 +1,88 @@
-/*******************************************************************************\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
@@ -102,210 +102,210 @@ import org.simantics.databoard.util.binary.BinaryMemory;
 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");
@@ -316,11 +316,11 @@ public class TestAccessor {
                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();
@@ -334,13 +334,13 @@ public class TestAccessor {
                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
@@ -352,13 +352,13 @@ public class TestAccessor {
                // 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
@@ -394,17 +394,17 @@ public class TestAccessor {
                        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); 
@@ -422,8 +422,8 @@ public class TestAccessor {
        
                // 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) );
                }               
        }
        
@@ -440,7 +440,7 @@ public class TestAccessor {
                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);
@@ -460,61 +460,61 @@ public class TestAccessor {
                        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] );
@@ -527,12 +527,12 @@ public class TestAccessor {
                        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]) );  
                        
@@ -549,7 +549,7 @@ public class TestAccessor {
                        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]) );  
@@ -558,10 +558,10 @@ public class TestAccessor {
                // 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
@@ -652,18 +652,18 @@ public class TestAccessor {
                                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);
@@ -697,18 +697,18 @@ public class TestAccessor {
                        }                       
                        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]);              
@@ -740,13 +740,13 @@ public class TestAccessor {
                        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++) {