1 package net.sf.ehcache.util;
2
3 import java.io.IOException;
4 import java.util.ArrayList;
5 import java.util.HashSet;
6 import java.util.Iterator;
7 import java.util.List;
8
9 import junit.framework.Assert;
10
11 import org.junit.Test;
12
13 public class LargeCollectionTest {
14
15 @Test
16 public void testIteration() throws IOException {
17
18 AggregateIterator<String> iterator = newIterator();
19 int i = 0;
20 while (iterator.hasNext()) {
21 String s = iterator.next();
22 Assert.assertNotSame("key1", s);
23 Assert.assertNotSame("key2", s);
24 i++;
25 }
26 Assert.assertEquals(198, i);
27
28 LargeSet set = new LargeSet() {
29
30 @Override
31 public Iterator sourceIterator() {
32 return newIterator();
33 }
34
35 @Override
36 public int sourceSize() {
37 return 198;
38 }
39
40 };
41
42 Assert.assertEquals(198, set.size());
43
44 HashSet additionalSet = new HashSet();
45
46 for (int j = 0; j < 100; j++) {
47 additionalSet.add("keyb" + j);
48 }
49
50 HashSet removeSet = new HashSet();
51
52 for (int j = 0; j < 50; j++) {
53 removeSet.add("keyb" + j);
54 }
55
56 int beforeSize = set.size();
57 set.addAll(additionalSet);
58 set.removeAll(removeSet);
59
60 Assert.assertEquals(beforeSize + 50, set.size());
61
62
63
64
65
66
67
68 }
69
70 private AggregateIterator<String> newIterator() {
71 HashSet removeSet = new HashSet();
72 removeSet.add("key1");
73 removeSet.add("key2");
74
75 HashSet sourceSet1 = new HashSet();
76 for (int i = 0; i < 100; i++) {
77 sourceSet1.add("key" + i);
78 }
79
80 HashSet sourceSet2 = new HashSet();
81 for (int i = 0; i < 100; i++) {
82 sourceSet1.add("keya" + i);
83 }
84 List sources = new ArrayList(4);
85 sources.add(sourceSet1.iterator());
86 sources.add(sourceSet2.iterator());
87
88 AggregateIterator<String> iterator = new AggregateIterator<String>(removeSet, sources);
89 return iterator;
90 }
91 }