X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.databoard%2Ftestcases%2Forg%2Fsimantics%2Fdataboard%2Ftests%2FTestFileList1.java;fp=bundles%2Forg.simantics.databoard%2Ftestcases%2Forg%2Fsimantics%2Fdataboard%2Ftests%2FTestFileList1.java;h=339778a2f0fc8837e8d123bb82beb29dfcf5ab7e;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git 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 index 000000000..339778a2f --- /dev/null +++ b/bundles/org.simantics.databoard/testcases/org/simantics/databoard/tests/TestFileList1.java @@ -0,0 +1,269 @@ +/******************************************************************************* + * 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 java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; + +import junit.framework.TestCase; + +import org.simantics.databoard.Bindings; +import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.file.FileList; +import org.simantics.databoard.file.IFileList; + +public class TestFileList1 extends TestCase { + + int length = 1024*10; + + String[] data1array; + List data1list; + IFileList data1file; + Binding data1binding = Bindings.getBindingUnchecked(String.class); + + public void setUp() + throws Exception { + data1array = new String[length]; + data1list = new ArrayList(length); + for (int i=0; i(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 data2 = new ArrayList(); + for (int i=0; i<500; i++) + data2.add( "XYZabc-??-#"+(i+1000000) ); + + data1file.clear(); + ((FileList)data1file).setAll(data2); + + assertEquals(data1file.size(), data2.size()); + for (int i=0; i)data1file).setAll(data1list); + + assertEquals(data1file.size(), data1list.size()); + for (int i=0; i iter = data1file.iterator(); + int i=0; + while (iter.hasNext()) + assertEquals(data1array[i++], iter.next()); + + i=100; + ListIterator 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 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(file, String.class); + + for (int i=0; i