]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/testcases/org/simantics/databoard/tests/TestFileList1.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.databoard / testcases / org / simantics / databoard / tests / TestFileList1.java
1 /*******************************************************************************
2  *  Copyright (c) 2010 Association for Decentralized Information Management in
3  *  Industry THTH ry.
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
8  *
9  *  Contributors:
10  *      VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.databoard.tests;
13
14 import java.io.File;
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;
20
21 import junit.framework.TestCase;
22
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;
27
28 public class TestFileList1 extends TestCase {
29
30         int length = 1024*10;
31
32         String[] data1array;
33         List<String> data1list;
34         IFileList<String> data1file;    
35         Binding data1binding = Bindings.getBindingUnchecked(String.class);
36         
37         public void setUp() 
38         throws Exception {
39                 data1array = new String[length];
40                 data1list = new ArrayList<String>(length); 
41                 for (int i=0; i<length; i++)
42                 {
43                         String s = "Line "+(i+1);
44                         data1array[i] = s;
45                         data1list.add( s );                     
46                 }
47                 
48                 data1file = new FileList<String>(File.createTempFile("Tmp", ".tmp"), String.class);
49                 data1file.getFile().deleteOnExit();
50         }
51         
52         public void tearDown() 
53         throws Exception 
54         {           
55                 data1file.close();              
56         }
57         
58         public void testAppend() 
59         throws Exception
60         {               
61                 // Write
62                 data1file.addAll(data1list);
63                 assertEquals(length, data1file.size());
64                 // Read-Verify
65                 int i=0;
66                 for (String line : data1file)
67                         assertEquals(data1array[i++], line);
68         }
69         
70         public void testClear()
71         throws Exception
72         {
73                 // Write
74                 data1file.addAll(data1list);
75                 assertFalse(data1file.isEmpty());
76                 assertEquals(length, data1file.size());
77                 // Clear all
78                 data1file.clear();
79                 assertTrue(data1file.isEmpty());
80                 assertEquals(0, data1file.size());
81                 // Check that file size has truncated
82                 assertTrue(data1file.getFile().length()<1024);
83         }
84         
85         public void testRemove()
86         throws Exception
87         {
88                 data1file.addAll(data1list);
89
90                 for (int i=0; i<length; i++)
91                         assertEquals(data1array[i], data1file.get(i));
92                 
93                 // remove 10 elements, one by one
94                 for (int i=0; i<10; i++) {
95                         data1file.remove(10);
96                         assertEquals(length-i-1, data1file.size());
97                 }
98                 
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++) {
103                         if (i==923) 
104                                 System.out.println("x");
105                         Object x = data1file.get(i-10);                 
106                         Object expected = data1file.get(i-10);
107                         assertEquals(expected, x);
108                 }
109         
110         }
111         
112         public void testInsertAll()
113         throws Exception
114         {
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));
121         }
122         
123         public void testSetAll()
124         throws Exception
125         {               
126                 List<String> data2 = new ArrayList<String>();
127                 for (int i=0; i<500; i++)
128                         data2.add( "XYZabc-??-#"+(i+1000000) );
129         
130                 data1file.clear();
131                 ((FileList<String>)data1file).setAll(data2);
132
133                 assertEquals(data1file.size(), data2.size());
134                 for (int i=0; i<data2.size(); i++)
135                         assertEquals(data2.get(i), data1file.get(i));
136                 
137                 ((FileList<String>)data1file).setAll(data1list);
138
139                 assertEquals(data1file.size(), data1list.size());
140                 for (int i=0; i<data1list.size(); i++)
141                         assertEquals(data1list.get(i), data1file.get(i));               
142         }
143         
144         public void testInsert()
145         throws Exception
146         {
147                 data1file.addAll(data1list);
148                 
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());
153                 }
154                 
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));            
162         }
163         
164         public void testIterator()
165         throws Exception
166         {
167                 data1file.addAll(data1list);
168
169                 Iterator<String> iter = data1file.iterator();
170                 int i=0;
171                 while (iter.hasNext())
172                         assertEquals(data1array[i++], iter.next());
173                 
174                 i=100;
175                 ListIterator<String> li = data1file.listIterator(100);
176                 while (li.hasNext()) {
177                         assertEquals(li.nextIndex(), i);
178                         assertEquals(data1array[i++], li.next());
179                 }
180                 assertTrue(i==length);
181                 
182                 i = data1file.size();
183                 li = data1file.listIterator(i);
184                 while (li.hasPrevious()) {
185                         --i;
186                         assertEquals(li.previousIndex(), i);
187                         assertEquals(data1array[i], li.previous());
188                 }
189                 
190                 // Change to smaller objects 
191                 li = data1file.listIterator();
192                 while (li.hasNext()) {
193                         li.next();
194                         li.set("XXX"+li.nextIndex());
195                 }
196                 // Verify               
197                 li = data1file.listIterator(0);
198                 while (li.hasNext()) {
199                         String value = li.next();
200                         assertEquals("XXX"+li.nextIndex(), value);
201                 }               
202
203                 // Change to larger objects 
204                 li = data1file.listIterator();
205                 while (li.hasNext()) {
206                         li.next();
207                         li.set("ABCDEFG "+li.nextIndex());
208                 }
209                 
210                 // Verify
211                 li = data1file.listIterator(0);
212                 while (li.hasNext()) {
213                         String value = li.next();
214                         assertEquals("ABCDEFG "+li.nextIndex(), value);
215                 }               
216         }
217         
218         public void testIndexOf() 
219         throws Exception
220         {
221                 data1file.addAll(data1list);
222
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"));
227         }
228         
229         public void testContains()
230         throws Exception
231         {
232                 data1file.addAll(data1list);
233                 assertTrue( data1file.contains("Line 5") );
234                 assertTrue( data1file.contains("Line 50") );
235                 assertFalse( data1file.contains("line 5") );
236         }
237         
238         public void testSubList()
239         throws Exception
240         {
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));
246         }
247         
248         public void testToArray()
249         throws Exception
250         {
251                 data1file.addAll(data1list);
252                 String[] array = data1file.toArray(new String[0]);
253                 assertTrue( Arrays.equals(array, data1array) );
254         }
255                 
256         public void testOpen()
257         throws Exception
258         {
259                 File file = data1file.getFile();
260                 data1file.addAll(data1list);
261                 data1file.close();
262                 data1file = new FileList<String>(file, String.class); 
263                 
264                 for (int i=0; i<length; i++)
265                         assertEquals(data1array[i], data1file.get(i));          
266         }
267
268 }
269