]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.databoard/testcases/org/simantics/databoard/tests/TestFileList2.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / testcases / org / simantics / databoard / tests / TestFileList2.java
diff --git a/bundles/org.simantics.databoard/testcases/org/simantics/databoard/tests/TestFileList2.java b/bundles/org.simantics.databoard/testcases/org/simantics/databoard/tests/TestFileList2.java
new file mode 100644 (file)
index 0000000..badf6cc
--- /dev/null
@@ -0,0 +1,249 @@
+/*******************************************************************************\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
+package org.simantics.databoard.tests;
+
+import java.io.File;\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.ListIterator;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.databoard.file.FileList;\r
+import org.simantics.databoard.file.IFileList;\r
+
+public class TestFileList2 extends TestCase {
+
+       int length = 1024*10;
+
+       Long[] data1array;
+       List<Long> data1list;
+       IFileList<Long> data1file;      
+       Binding data1binding = Bindings.getBindingUnchecked(Long.class);
+       
+       public void setUp() 
+       throws Exception {
+               data1array = new Long[length];
+               data1list = new ArrayList<Long>(length); 
+               for (int i=0; i<length; i++)
+               {
+                       Long s = Long.valueOf(i);
+                       data1array[i] = s;
+                       data1list.add( s );                     
+               }
+               
+               File tmp1 = File.createTempFile("Tmp", ".tmp");
+               tmp1.deleteOnExit();
+               
+               data1file = new FileList<Long>(tmp1, Long.class); 
+       }
+       
+       public void tearDown() 
+       throws Exception 
+       {
+               data1file.close();
+       }
+       
+       public void testAppend() 
+       throws Exception
+       {               
+               // Write
+               data1file.addAll(data1list);
+               assertEquals(length, data1file.size());
+               // Read-Verify
+               int i=0;
+               for (Long line : data1file)
+                       assertEquals(data1array[i++], line);
+       }
+       
+       public void testClear()
+       throws Exception
+       {
+               // Write
+               data1file.addAll(data1list);
+               assertFalse(data1file.isEmpty());
+               assertEquals(length, data1file.size());
+               // Clear all
+               data1file.clear();
+               assertTrue(data1file.isEmpty());
+               assertEquals(0, data1file.size());
+               // Check that file size has truncated
+               assertTrue(data1file.getFile().length()<1024);
+       }
+       
+       public void testRemove()
+       throws Exception
+       {
+               data1file.addAll(data1list);
+               
+               // remove 10 elements, one by one
+               for (int i=0; i<10; i++) {
+                       data1file.remove(10);
+                       assertEquals(length-i-1, data1file.size());
+               }
+               
+               // check data looks sane
+               for (int i=0; i<10; i++)
+                       assertEquals(data1array[i], data1file.get(i));
+               for (int i=20; i<length; i++)
+                       assertEquals(data1array[i], data1file.get(i-10));
+       
+       }
+       
+       public void testSetAll()
+       throws Exception
+       {               
+               List<Long> data2 = new ArrayList<Long>();
+               for (long i=0L; i<500L; i++)
+                       data2.add( i + Integer.MAX_VALUE );
+       
+               data1file.clear();
+               ((FileList<Long>)data1file).setAll(data2);
+
+               assertEquals(data1file.size(), data2.size());
+               for (int i=0; i<data2.size(); i++)
+                       assertEquals(data2.get(i), data1file.get(i));
+               
+               ((FileList<Long>)data1file).setAll(data1list);
+
+               assertEquals(data1file.size(), data1list.size());
+               for (int i=0; i<data1list.size(); i++)
+                       assertEquals(data1list.get(i), data1file.get(i));               
+       }       
+       
+       public void testInsert()
+       throws Exception
+       {
+               data1file.addAll(data1list);
+               
+               // int 10 elements, one by one
+               for (int i=0; i<10; i++) {
+                       data1file.add(10+i, Long.valueOf(-i));
+                       assertEquals(length+i+1, data1file.size());
+               }
+               
+               // check data looks sane
+               for (int i=0; i<10; i++)
+                       assertEquals(data1array[i], data1file.get(i));
+               for (int i=0; i<10; i++)
+                       assertEquals(Long.valueOf(-i), data1file.get(i+10));
+               for (int i=20; i<length-10; i++)
+                       assertEquals(data1array[i+10], data1file.get(i+20));            
+       }
+       
+       public void testInsertAll()
+       throws Exception
+       {
+               data1file.addAll(data1list);
+               data1file.addAll(0, data1list);
+               for (int i=0; i<length; i++)
+                       assertEquals(data1array[i], data1file.get(i));
+               for (int i=0; i<length; i++)
+                       assertEquals(data1array[i], data1file.get(i+length));
+       }       
+       
+       public void testIterator()
+       throws Exception
+       {
+               data1file.addAll(data1list);
+
+               Iterator<Long> iter = data1file.iterator();
+               int i=0;
+               while (iter.hasNext())
+                       assertEquals(data1array[i++], iter.next());
+               
+               i=100;
+               ListIterator<Long> li = data1file.listIterator(100);
+               while (li.hasNext()) {
+                       assertEquals(li.nextIndex(), i);
+                       assertEquals(data1array[i++], li.next());
+               }
+               assertTrue(i==length);
+               
+               i = data1file.size();
+               li = data1file.listIterator(i);
+               while (li.hasPrevious()) {
+                       --i;
+                       assertEquals(li.previousIndex(), i);
+                       assertEquals(data1array[i], li.previous());
+               }
+               
+               // Change to other objects 
+               li = data1file.listIterator();
+               while (li.hasNext()) {
+                       li.next();
+                       li.set(Long.valueOf(-li.nextIndex()));
+               }
+               // Verify               
+               li = data1file.listIterator(0);
+               while (li.hasNext()) {
+                       Long value = li.next();
+                       assertEquals(Long.valueOf(-li.nextIndex()), value);
+               }               
+       }
+       
+       public void testIndexOf() 
+       throws Exception
+       {
+               data1file.addAll(data1list);
+
+               assertEquals(2, data1file.indexOf(Long.valueOf(2)));
+               assertEquals(99, data1file.lastIndexOf(Long.valueOf(99)));
+               assertEquals(-1, data1file.indexOf(-5));
+               assertEquals(-1, data1file.lastIndexOf(-5));
+       }
+       
+       public void testContains()
+       throws Exception
+       {
+               data1file.addAll(data1list);
+               assertTrue( data1file.contains(Long.valueOf(5)) );
+               assertTrue( data1file.contains(Long.valueOf(50)) );
+               assertFalse( data1file.contains(Long.MAX_VALUE) );
+       }
+       
+       public void testSubList()
+       throws Exception
+       {
+               data1file.addAll(data1list);
+               List<Long> subList = data1file.subList(10, 110);
+               assertEquals(100, subList.size());
+               for (int i=0; i<100; i++)
+                       assertEquals(data1array[i+10], subList.get(i));
+       }
+       
+       public void testToArray()
+       throws Exception
+       {
+               data1file.addAll(data1list);
+               Long[] array = data1file.toArray(new Long[0]);
+               assertTrue( Arrays.equals(array, data1array) );
+       }
+               
+       public void testOpen()
+       throws Exception
+       {
+               File file = data1file.getFile();
+               data1file.addAll(data1list);
+               data1file.close();
+               data1file = new FileList<Long>(file, Long.class); 
+               
+               for (int i=0; i<length; i++)
+                       assertEquals(data1array[i], data1file.get(i));          
+       }
+
+}
+