/******************************************************************************* * 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