]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.databoard/testcases/org/simantics/databoard/tests/TestFileList1.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / testcases / org / simantics / databoard / tests / TestFileList1.java
diff --git a/bundles/org.simantics.databoard/testcases/org/simantics/databoard/tests/TestFileList1.java b/bundles/org.simantics.databoard/testcases/org/simantics/databoard/tests/TestFileList1.java
new file mode 100644 (file)
index 0000000..339778a
--- /dev/null
@@ -0,0 +1,269 @@
+/*******************************************************************************\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 TestFileList1 extends TestCase {
+
+       int length = 1024*10;
+
+       String[] data1array;
+       List<String> data1list;
+       IFileList<String> data1file;    
+       Binding data1binding = Bindings.getBindingUnchecked(String.class);
+       
+       public void setUp() 
+       throws Exception {
+               data1array = new String[length];
+               data1list = new ArrayList<String>(length); 
+               for (int i=0; i<length; i++)
+               {
+                       String s = "Line "+(i+1);
+                       data1array[i] = s;
+                       data1list.add( s );                     
+               }
+               
+               data1file = new FileList<String>(File.createTempFile("Tmp", ".tmp"), String.class);
+               data1file.getFile().deleteOnExit();
+       }
+       
+       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 (String 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);
+
+               for (int i=0; i<length; i++)
+                       assertEquals(data1array[i], data1file.get(i));
+               
+               // 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++) {
+                       if (i==923) 
+                               System.out.println("x");
+                       Object x = data1file.get(i-10);                 
+                       Object expected = data1file.get(i-10);
+                       assertEquals(expected, x);
+               }
+       
+       }
+       
+       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 testSetAll()
+       throws Exception
+       {               
+               List<String> data2 = new ArrayList<String>();
+               for (int i=0; i<500; i++)
+                       data2.add( "XYZabc-??-#"+(i+1000000) );
+       
+               data1file.clear();
+               ((FileList<String>)data1file).setAll(data2);
+
+               assertEquals(data1file.size(), data2.size());
+               for (int i=0; i<data2.size(); i++)
+                       assertEquals(data2.get(i), data1file.get(i));
+               
+               ((FileList<String>)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, "XXX"+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("XXX"+i, data1file.get(i+10));
+               for (int i=20; i<length-10; i++)
+                       assertEquals(data1array[i+10], data1file.get(i+20));            
+       }
+       
+       public void testIterator()
+       throws Exception
+       {
+               data1file.addAll(data1list);
+
+               Iterator<String> iter = data1file.iterator();
+               int i=0;
+               while (iter.hasNext())
+                       assertEquals(data1array[i++], iter.next());
+               
+               i=100;
+               ListIterator<String> 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 smaller objects 
+               li = data1file.listIterator();
+               while (li.hasNext()) {
+                       li.next();
+                       li.set("XXX"+li.nextIndex());
+               }
+               // Verify               
+               li = data1file.listIterator(0);
+               while (li.hasNext()) {
+                       String value = li.next();
+                       assertEquals("XXX"+li.nextIndex(), value);
+               }               
+
+               // Change to larger objects 
+               li = data1file.listIterator();
+               while (li.hasNext()) {
+                       li.next();
+                       li.set("ABCDEFG "+li.nextIndex());
+               }
+               
+               // Verify
+               li = data1file.listIterator(0);
+               while (li.hasNext()) {
+                       String value = li.next();
+                       assertEquals("ABCDEFG "+li.nextIndex(), value);
+               }               
+       }
+       
+       public void testIndexOf() 
+       throws Exception
+       {
+               data1file.addAll(data1list);
+
+               assertEquals(2, data1file.indexOf("Line 3"));
+               assertEquals(99, data1file.lastIndexOf("Line 100"));
+               assertEquals(-1, data1file.indexOf("xyz"));
+               assertEquals(-1, data1file.lastIndexOf("xyz"));
+       }
+       
+       public void testContains()
+       throws Exception
+       {
+               data1file.addAll(data1list);
+               assertTrue( data1file.contains("Line 5") );
+               assertTrue( data1file.contains("Line 50") );
+               assertFalse( data1file.contains("line 5") );
+       }
+       
+       public void testSubList()
+       throws Exception
+       {
+               data1file.addAll(data1list);
+               List<String> 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);
+               String[] array = data1file.toArray(new String[0]);
+               assertTrue( Arrays.equals(array, data1array) );
+       }
+               
+       public void testOpen()
+       throws Exception
+       {
+               File file = data1file.getFile();
+               data1file.addAll(data1list);
+               data1file.close();
+               data1file = new FileList<String>(file, String.class); 
+               
+               for (int i=0; i<length; i++)
+                       assertEquals(data1array[i], data1file.get(i));          
+       }
+
+}
+