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 TestFileList2 extends TestCase {
34 IFileList<Long> data1file;
35 Binding data1binding = Bindings.getBindingUnchecked(Long.class);
39 data1array = new Long[length];
40 data1list = new ArrayList<Long>(length);
41 for (int i=0; i<length; i++)
43 Long s = Long.valueOf(i);
48 File tmp1 = File.createTempFile("Tmp", ".tmp");
51 data1file = new FileList<Long>(tmp1, Long.class);
54 public void tearDown()
60 public void testAppend()
64 data1file.addAll(data1list);
65 assertEquals(length, data1file.size());
68 for (Long line : data1file)
69 assertEquals(data1array[i++], line);
72 public void testClear()
76 data1file.addAll(data1list);
77 assertFalse(data1file.isEmpty());
78 assertEquals(length, data1file.size());
81 assertTrue(data1file.isEmpty());
82 assertEquals(0, data1file.size());
83 // Check that file size has truncated
84 assertTrue(data1file.getFile().length()<1024);
87 public void testRemove()
90 data1file.addAll(data1list);
92 // remove 10 elements, one by one
93 for (int i=0; i<10; i++) {
95 assertEquals(length-i-1, data1file.size());
98 // check data looks sane
99 for (int i=0; i<10; i++)
100 assertEquals(data1array[i], data1file.get(i));
101 for (int i=20; i<length; i++)
102 assertEquals(data1array[i], data1file.get(i-10));
106 public void testSetAll()
109 List<Long> data2 = new ArrayList<Long>();
110 for (long i=0L; i<500L; i++)
111 data2.add( i + Integer.MAX_VALUE );
114 ((FileList<Long>)data1file).setAll(data2);
116 assertEquals(data1file.size(), data2.size());
117 for (int i=0; i<data2.size(); i++)
118 assertEquals(data2.get(i), data1file.get(i));
120 ((FileList<Long>)data1file).setAll(data1list);
122 assertEquals(data1file.size(), data1list.size());
123 for (int i=0; i<data1list.size(); i++)
124 assertEquals(data1list.get(i), data1file.get(i));
127 public void testInsert()
130 data1file.addAll(data1list);
132 // int 10 elements, one by one
133 for (int i=0; i<10; i++) {
134 data1file.add(10+i, Long.valueOf(-i));
135 assertEquals(length+i+1, data1file.size());
138 // check data looks sane
139 for (int i=0; i<10; i++)
140 assertEquals(data1array[i], data1file.get(i));
141 for (int i=0; i<10; i++)
142 assertEquals(Long.valueOf(-i), data1file.get(i+10));
143 for (int i=20; i<length-10; i++)
144 assertEquals(data1array[i+10], data1file.get(i+20));
147 public void testInsertAll()
150 data1file.addAll(data1list);
151 data1file.addAll(0, data1list);
152 for (int i=0; i<length; i++)
153 assertEquals(data1array[i], data1file.get(i));
154 for (int i=0; i<length; i++)
155 assertEquals(data1array[i], data1file.get(i+length));
158 public void testIterator()
161 data1file.addAll(data1list);
163 Iterator<Long> iter = data1file.iterator();
165 while (iter.hasNext())
166 assertEquals(data1array[i++], iter.next());
169 ListIterator<Long> li = data1file.listIterator(100);
170 while (li.hasNext()) {
171 assertEquals(li.nextIndex(), i);
172 assertEquals(data1array[i++], li.next());
174 assertTrue(i==length);
176 i = data1file.size();
177 li = data1file.listIterator(i);
178 while (li.hasPrevious()) {
180 assertEquals(li.previousIndex(), i);
181 assertEquals(data1array[i], li.previous());
184 // Change to other objects
185 li = data1file.listIterator();
186 while (li.hasNext()) {
188 li.set(Long.valueOf(-li.nextIndex()));
191 li = data1file.listIterator(0);
192 while (li.hasNext()) {
193 Long value = li.next();
194 assertEquals(Long.valueOf(-li.nextIndex()), value);
198 public void testIndexOf()
201 data1file.addAll(data1list);
203 assertEquals(2, data1file.indexOf(Long.valueOf(2)));
204 assertEquals(99, data1file.lastIndexOf(Long.valueOf(99)));
205 assertEquals(-1, data1file.indexOf(-5));
206 assertEquals(-1, data1file.lastIndexOf(-5));
209 public void testContains()
212 data1file.addAll(data1list);
213 assertTrue( data1file.contains(Long.valueOf(5)) );
214 assertTrue( data1file.contains(Long.valueOf(50)) );
215 assertFalse( data1file.contains(Long.MAX_VALUE) );
218 public void testSubList()
221 data1file.addAll(data1list);
222 List<Long> subList = data1file.subList(10, 110);
223 assertEquals(100, subList.size());
224 for (int i=0; i<100; i++)
225 assertEquals(data1array[i+10], subList.get(i));
228 public void testToArray()
231 data1file.addAll(data1list);
232 Long[] array = data1file.toArray(new Long[0]);
233 assertTrue( Arrays.equals(array, data1array) );
236 public void testOpen()
239 File file = data1file.getFile();
240 data1file.addAll(data1list);
242 data1file = new FileList<Long>(file, Long.class);
244 for (int i=0; i<length; i++)
245 assertEquals(data1array[i], data1file.get(i));