1 /*******************************************************************************
2 * Copyright (c) 2010 Association for Decentralized Information Management in
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.databoard.tests;
15 import java.util.ArrayList;
16 import java.util.Arrays;
17 import java.util.Iterator;
18 import java.util.List;
19 import java.util.ListIterator;
21 import junit.framework.TestCase;
23 import org.simantics.databoard.Bindings;
24 import org.simantics.databoard.binding.Binding;
25 import org.simantics.databoard.file.FileList;
26 import org.simantics.databoard.file.IFileList;
28 public class TestFileList1 extends TestCase {
33 List<String> data1list;
34 IFileList<String> data1file;
35 Binding data1binding = Bindings.getBindingUnchecked(String.class);
39 data1array = new String[length];
40 data1list = new ArrayList<String>(length);
41 for (int i=0; i<length; i++)
43 String s = "Line "+(i+1);
48 data1file = new FileList<String>(File.createTempFile("Tmp", ".tmp"), String.class);
49 data1file.getFile().deleteOnExit();
52 public void tearDown()
58 public void testAppend()
62 data1file.addAll(data1list);
63 assertEquals(length, data1file.size());
66 for (String line : data1file)
67 assertEquals(data1array[i++], line);
70 public void testClear()
74 data1file.addAll(data1list);
75 assertFalse(data1file.isEmpty());
76 assertEquals(length, data1file.size());
79 assertTrue(data1file.isEmpty());
80 assertEquals(0, data1file.size());
81 // Check that file size has truncated
82 assertTrue(data1file.getFile().length()<1024);
85 public void testRemove()
88 data1file.addAll(data1list);
90 for (int i=0; i<length; i++)
91 assertEquals(data1array[i], data1file.get(i));
93 // remove 10 elements, one by one
94 for (int i=0; i<10; i++) {
96 assertEquals(length-i-1, data1file.size());
99 // check data looks sane
100 for (int i=0; i<10; i++)
101 assertEquals(data1array[i], data1file.get(i));
102 for (int i=20; i<length; i++) {
104 System.out.println("x");
105 Object x = data1file.get(i-10);
106 Object expected = data1file.get(i-10);
107 assertEquals(expected, x);
112 public void testInsertAll()
115 data1file.addAll(data1list);
116 data1file.addAll(0, data1list);
117 for (int i=0; i<length; i++)
118 assertEquals(data1array[i], data1file.get(i));
119 for (int i=0; i<length; i++)
120 assertEquals(data1array[i], data1file.get(i+length));
123 public void testSetAll()
126 List<String> data2 = new ArrayList<String>();
127 for (int i=0; i<500; i++)
128 data2.add( "XYZabc-??-#"+(i+1000000) );
131 ((FileList<String>)data1file).setAll(data2);
133 assertEquals(data1file.size(), data2.size());
134 for (int i=0; i<data2.size(); i++)
135 assertEquals(data2.get(i), data1file.get(i));
137 ((FileList<String>)data1file).setAll(data1list);
139 assertEquals(data1file.size(), data1list.size());
140 for (int i=0; i<data1list.size(); i++)
141 assertEquals(data1list.get(i), data1file.get(i));
144 public void testInsert()
147 data1file.addAll(data1list);
149 // int 10 elements, one by one
150 for (int i=0; i<10; i++) {
151 data1file.add(10+i, "XXX"+i);
152 assertEquals(length+i+1, data1file.size());
155 // check data looks sane
156 for (int i=0; i<10; i++)
157 assertEquals(data1array[i], data1file.get(i));
158 for (int i=0; i<10; i++)
159 assertEquals("XXX"+i, data1file.get(i+10));
160 for (int i=20; i<length-10; i++)
161 assertEquals(data1array[i+10], data1file.get(i+20));
164 public void testIterator()
167 data1file.addAll(data1list);
169 Iterator<String> iter = data1file.iterator();
171 while (iter.hasNext())
172 assertEquals(data1array[i++], iter.next());
175 ListIterator<String> li = data1file.listIterator(100);
176 while (li.hasNext()) {
177 assertEquals(li.nextIndex(), i);
178 assertEquals(data1array[i++], li.next());
180 assertTrue(i==length);
182 i = data1file.size();
183 li = data1file.listIterator(i);
184 while (li.hasPrevious()) {
186 assertEquals(li.previousIndex(), i);
187 assertEquals(data1array[i], li.previous());
190 // Change to smaller objects
191 li = data1file.listIterator();
192 while (li.hasNext()) {
194 li.set("XXX"+li.nextIndex());
197 li = data1file.listIterator(0);
198 while (li.hasNext()) {
199 String value = li.next();
200 assertEquals("XXX"+li.nextIndex(), value);
203 // Change to larger objects
204 li = data1file.listIterator();
205 while (li.hasNext()) {
207 li.set("ABCDEFG "+li.nextIndex());
211 li = data1file.listIterator(0);
212 while (li.hasNext()) {
213 String value = li.next();
214 assertEquals("ABCDEFG "+li.nextIndex(), value);
218 public void testIndexOf()
221 data1file.addAll(data1list);
223 assertEquals(2, data1file.indexOf("Line 3"));
224 assertEquals(99, data1file.lastIndexOf("Line 100"));
225 assertEquals(-1, data1file.indexOf("xyz"));
226 assertEquals(-1, data1file.lastIndexOf("xyz"));
229 public void testContains()
232 data1file.addAll(data1list);
233 assertTrue( data1file.contains("Line 5") );
234 assertTrue( data1file.contains("Line 50") );
235 assertFalse( data1file.contains("line 5") );
238 public void testSubList()
241 data1file.addAll(data1list);
242 List<String> subList = data1file.subList(10, 110);
243 assertEquals(100, subList.size());
244 for (int i=0; i<100; i++)
245 assertEquals(data1array[i+10], subList.get(i));
248 public void testToArray()
251 data1file.addAll(data1list);
252 String[] array = data1file.toArray(new String[0]);
253 assertTrue( Arrays.equals(array, data1array) );
256 public void testOpen()
259 File file = data1file.getFile();
260 data1file.addAll(data1list);
262 data1file = new FileList<String>(file, String.class);
264 for (int i=0; i<length; i++)
265 assertEquals(data1array[i], data1file.get(i));