Skip to content

Commit 506dcde

Browse files
committed
add tests
1 parent 244c633 commit 506dcde

File tree

4 files changed

+251
-1
lines changed

4 files changed

+251
-1
lines changed

net.lecousin.core/src/main/java/net/lecousin/framework/collections/LinkedIterators.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public T next() {
5555

5656
@Override
5757
public void remove() {
58-
if (current == null) throw new NoSuchElementException();
58+
if (current == null) throw new IllegalStateException();
5959
current.remove();
6060
}
6161

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/application/TestMaven.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,20 @@ public void testRemoteRepository() throws Exception {
127127
pom.getLoader();
128128
pom.getDirectory();
129129

130+
pom = repo.load("com.google.guava", "guava-parent", "22.0", pomLoader, Task.PRIORITY_NORMAL).blockResult(0);
131+
for (Dependency dep : pom.getDependencies()) {
132+
dep.getGroupId();
133+
dep.getArtifactId();
134+
dep.getClassifier();
135+
dep.getVersionSpecification();
136+
dep.getExcludedDependencies();
137+
dep.getKnownLocation();
138+
dep.isOptional();
139+
}
140+
pom.getDependenciesAdditionalRepositories();
141+
pom.getLoader();
142+
pom.getDirectory();
143+
130144
repo = new MavenRemoteRepository("http://repo.maven.apache.org/maven2", false, true);
131145
}
132146

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
package net.lecousin.framework.core.tests.collections;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.Collection;
6+
7+
import org.junit.Assert;
8+
import org.junit.Test;
9+
10+
import net.lecousin.framework.collections.CollectionListener;
11+
import net.lecousin.framework.collections.CollectionListener.Keep;
12+
import net.lecousin.framework.concurrent.Task;
13+
import net.lecousin.framework.concurrent.synch.SynchronizationPoint;
14+
import net.lecousin.framework.core.test.LCCoreAbstractTest;
15+
import net.lecousin.framework.mutable.Mutable;
16+
17+
public class TestCollectionListener extends LCCoreAbstractTest {
18+
19+
@Test(timeout=120000)
20+
public void testKeep() {
21+
CollectionListener.Keep<Integer> keep = new Keep<>(new ArrayList<>(), Task.PRIORITY_NORMAL);
22+
ArrayList<Integer> col = new ArrayList<>();
23+
ArrayList<Integer> changed = new ArrayList<>();
24+
Mutable<SynchronizationPoint<Exception>> s = new Mutable<>(new SynchronizationPoint<>());
25+
CollectionListener<Integer> listener;
26+
keep.addListener(listener = new CollectionListener<Integer>() {
27+
@Override
28+
public void elementsAdded(Collection<? extends Integer> elements) {
29+
col.addAll(elements);
30+
s.get().unblock();
31+
}
32+
33+
@Override
34+
public void elementsRemoved(Collection<? extends Integer> elements) {
35+
col.removeAll(elements);
36+
s.get().unblock();
37+
}
38+
39+
@Override
40+
public void elementsChanged(Collection<? extends Integer> elements) {
41+
changed.addAll(elements);
42+
s.get().unblock();
43+
}
44+
45+
@Override
46+
public void error(Throwable error) {
47+
s.get().error(new Exception(error));
48+
}
49+
});
50+
51+
s.get().block(0);
52+
Assert.assertTrue(col.isEmpty());
53+
54+
s.set(new SynchronizationPoint<>());
55+
keep.elementsReady(Arrays.asList(Integer.valueOf(10), Integer.valueOf(20)));
56+
s.get().block(0);
57+
Assert.assertEquals(2, col.size());
58+
Assert.assertTrue(col.contains(Integer.valueOf(10)));
59+
Assert.assertTrue(col.contains(Integer.valueOf(20)));
60+
61+
s.set(new SynchronizationPoint<>());
62+
keep.elementsRemoved(Arrays.asList(Integer.valueOf(10)));
63+
s.get().block(0);
64+
Assert.assertEquals(1, col.size());
65+
Assert.assertFalse(col.contains(Integer.valueOf(10)));
66+
Assert.assertTrue(col.contains(Integer.valueOf(20)));
67+
68+
s.set(new SynchronizationPoint<>());
69+
keep.elementsAdded(Arrays.asList(Integer.valueOf(30), Integer.valueOf(40)));
70+
s.get().block(0);
71+
Assert.assertEquals(3, col.size());
72+
Assert.assertFalse(col.contains(Integer.valueOf(10)));
73+
Assert.assertTrue(col.contains(Integer.valueOf(20)));
74+
Assert.assertTrue(col.contains(Integer.valueOf(30)));
75+
Assert.assertTrue(col.contains(Integer.valueOf(40)));
76+
77+
s.set(new SynchronizationPoint<>());
78+
keep.elementsRemoved(Arrays.asList(Integer.valueOf(30)));
79+
s.get().block(0);
80+
Assert.assertEquals(2, col.size());
81+
Assert.assertFalse(col.contains(Integer.valueOf(10)));
82+
Assert.assertTrue(col.contains(Integer.valueOf(20)));
83+
Assert.assertFalse(col.contains(Integer.valueOf(30)));
84+
Assert.assertTrue(col.contains(Integer.valueOf(40)));
85+
86+
s.set(new SynchronizationPoint<>());
87+
changed.clear();
88+
keep.elementsChanged(Arrays.asList(Integer.valueOf(20), Integer.valueOf(40)));
89+
s.get().block(0);
90+
Assert.assertEquals(2, col.size());
91+
Assert.assertFalse(col.contains(Integer.valueOf(10)));
92+
Assert.assertTrue(col.contains(Integer.valueOf(20)));
93+
Assert.assertFalse(col.contains(Integer.valueOf(30)));
94+
Assert.assertTrue(col.contains(Integer.valueOf(40)));
95+
Assert.assertTrue(changed.contains(Integer.valueOf(20)));
96+
Assert.assertTrue(changed.contains(Integer.valueOf(40)));
97+
98+
keep.removeListener(listener);
99+
s.set(new SynchronizationPoint<>());
100+
keep.elementsReady(Arrays.asList(Integer.valueOf(100), Integer.valueOf(200)));
101+
s.get().block(3000);
102+
Assert.assertFalse(s.get().isUnblocked());
103+
Assert.assertEquals(2, col.size());
104+
Assert.assertFalse(col.contains(Integer.valueOf(10)));
105+
Assert.assertTrue(col.contains(Integer.valueOf(20)));
106+
Assert.assertFalse(col.contains(Integer.valueOf(30)));
107+
Assert.assertTrue(col.contains(Integer.valueOf(40)));
108+
109+
s.set(new SynchronizationPoint<>());
110+
keep.addListener(listener);
111+
s.get().block(0);
112+
s.set(new SynchronizationPoint<>());
113+
keep.error(new Exception());
114+
s.get().block(0);
115+
Assert.assertNotNull(s.get().getError());
116+
117+
Mutable<SynchronizationPoint<Exception>> s2 = new Mutable<>(new SynchronizationPoint<>());
118+
CollectionListener<Integer> listener2;
119+
keep.addListener(listener2 = new CollectionListener<Integer>() {
120+
@Override
121+
public void elementsAdded(Collection<? extends Integer> elements) {
122+
}
123+
124+
@Override
125+
public void elementsRemoved(Collection<? extends Integer> elements) {
126+
}
127+
128+
@Override
129+
public void elementsChanged(Collection<? extends Integer> elements) {
130+
}
131+
132+
@Override
133+
public void error(Throwable error) {
134+
s2.get().error(new Exception(error));
135+
}
136+
});
137+
s2.get().block(0);
138+
Assert.assertNotNull(s2.get().getError());
139+
140+
keep.removeListener(listener2);
141+
keep.removeListener(listener);
142+
}
143+
144+
}
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package net.lecousin.framework.core.tests.collections;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.Iterator;
6+
import java.util.NoSuchElementException;
7+
8+
import org.junit.Assert;
9+
import org.junit.Test;
10+
11+
import net.lecousin.framework.collections.LinkedIterators;
12+
import net.lecousin.framework.core.test.LCCoreAbstractTest;
13+
14+
public class TestLinkedIterators extends LCCoreAbstractTest {
15+
16+
@Test(timeout=30000)
17+
public void test() {
18+
ArrayList<Integer> c1 = new ArrayList<Integer>();
19+
ArrayList<Integer> c2 = new ArrayList<Integer>();
20+
ArrayList<Integer> c3 = new ArrayList<Integer>();
21+
ArrayList<Integer> c4 = new ArrayList<Integer>();
22+
23+
c1.add(Integer.valueOf(1));
24+
c1.add(Integer.valueOf(2));
25+
c2.add(Integer.valueOf(10));
26+
c2.add(Integer.valueOf(20));
27+
c2.add(Integer.valueOf(30));
28+
c4.add(Integer.valueOf(100));
29+
c4.add(Integer.valueOf(200));
30+
31+
LinkedIterators<Integer> it;
32+
33+
it = new LinkedIterators<>();
34+
it.addIterator(c1.iterator());
35+
it.addIterator(c2.iterator());
36+
it.addIterator(c3.iterator());
37+
it.addIterator(c4.iterator());
38+
check(it);
39+
40+
it = new LinkedIterators<>(Arrays.asList(c1.iterator(), c2.iterator(), c3.iterator(), c4.iterator()));
41+
check(it);
42+
43+
it = new LinkedIterators<>(c1.iterator(), c2.iterator(), c3.iterator(), c4.iterator());
44+
check(it);
45+
46+
it = new LinkedIterators<>(c1.iterator(), c2.iterator(), c3.iterator(), c4.iterator());
47+
try {
48+
it.remove();
49+
throw new AssertionError("Must throw IllegalStateException");
50+
} catch (IllegalStateException e) {
51+
// ok
52+
}
53+
while (it.hasNext()) {
54+
it.next();
55+
it.remove();
56+
}
57+
Assert.assertTrue(c1.isEmpty());
58+
Assert.assertTrue(c2.isEmpty());
59+
Assert.assertTrue(c3.isEmpty());
60+
Assert.assertTrue(c4.isEmpty());
61+
try {
62+
it.remove();
63+
throw new AssertionError("Must throw IllegalStateException");
64+
} catch (IllegalStateException e) {
65+
// ok
66+
}
67+
}
68+
69+
private static void check(Iterator<Integer> it) {
70+
Assert.assertEquals(Integer.valueOf(1), it.next());
71+
Assert.assertTrue(it.hasNext());
72+
Assert.assertEquals(Integer.valueOf(2), it.next());
73+
Assert.assertTrue(it.hasNext());
74+
Assert.assertEquals(Integer.valueOf(10), it.next());
75+
Assert.assertTrue(it.hasNext());
76+
Assert.assertEquals(Integer.valueOf(20), it.next());
77+
Assert.assertTrue(it.hasNext());
78+
Assert.assertEquals(Integer.valueOf(30), it.next());
79+
Assert.assertTrue(it.hasNext());
80+
Assert.assertEquals(Integer.valueOf(100), it.next());
81+
Assert.assertTrue(it.hasNext());
82+
Assert.assertEquals(Integer.valueOf(200), it.next());
83+
Assert.assertFalse(it.hasNext());
84+
try {
85+
it.next();
86+
throw new AssertionError("Must throw NoSuchElementException");
87+
} catch (NoSuchElementException e) {
88+
// ok
89+
}
90+
}
91+
92+
}

0 commit comments

Comments
 (0)