Skip to content

Commit 1a39a6a

Browse files
committed
add tests
1 parent 5570d46 commit 1a39a6a

File tree

9 files changed

+247
-14
lines changed

9 files changed

+247
-14
lines changed

net.lecousin.core/src/main/java/net/lecousin/framework/math/FragmentedRangeBigInteger.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public static FragmentedRangeBigInteger intersect(FragmentedRangeBigInteger list
4242
/** Create a copy of this instance. */
4343
public FragmentedRangeBigInteger copy() {
4444
FragmentedRangeBigInteger c = new FragmentedRangeBigInteger();
45-
for (RangeBigInteger r : this) c.add(r.copy());
45+
for (RangeBigInteger r : this) c.add(new RangeBigInteger(r));
4646
return c;
4747
}
4848

net.lecousin.core/src/main/java/net/lecousin/framework/math/FragmentedRangeLong.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static FragmentedRangeLong intersect(FragmentedRangeLong list1, Fragmente
4141
/** Create a copy of this instance. */
4242
public FragmentedRangeLong copy() {
4343
FragmentedRangeLong c = new FragmentedRangeLong();
44-
for (RangeLong r : this) c.add(r.copy());
44+
for (RangeLong r : this) c.add(new RangeLong(r));
4545
return c;
4646
}
4747

net.lecousin.core/src/main/java/net/lecousin/framework/math/RangeBigInteger.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,15 @@ public RangeBigInteger(BigInteger min, BigInteger max) {
1313
this.max = max;
1414
}
1515

16+
/** Copy. */
17+
public RangeBigInteger(RangeBigInteger copy) {
18+
this.min = copy.min;
19+
this.max = copy.max;
20+
}
21+
1622
public BigInteger min;
1723
public BigInteger max;
1824

19-
/** Create a copy of this instance. */
20-
public RangeBigInteger copy() {
21-
return new RangeBigInteger(min, max);
22-
}
23-
2425
@Override
2526
public boolean equals(Object obj) {
2627
if (obj == null || !(obj instanceof RangeBigInteger)) return false;

net.lecousin.core/src/main/java/net/lecousin/framework/math/RangeLong.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,15 @@ public RangeLong(long min, long max) {
1313
this.max = max;
1414
}
1515

16+
/** Copy. */
17+
public RangeLong(RangeLong copy) {
18+
this.min = copy.min;
19+
this.max = copy.max;
20+
}
21+
1622
public long min;
1723
public long max;
1824

19-
/** Create a copy of this instance. */
20-
public RangeLong copy() {
21-
return new RangeLong(min, max);
22-
}
23-
2425
@Override
2526
public boolean equals(Object obj) {
2627
if (obj == null || !(obj instanceof RangeLong)) return false;
@@ -58,7 +59,7 @@ public Pair<RangeLong,RangeLong> removeIntersect(RangeLong o) {
5859
RangeLong after;
5960
if (min < o.min) {
6061
if (max < o.min) {
61-
before = copy();
62+
before = new RangeLong(this);
6263
after = null;
6364
} else {
6465
before = new RangeLong(min, o.min);
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
package net.lecousin.framework.core.tests.math;
2+
3+
import java.math.BigInteger;
4+
5+
import net.lecousin.framework.core.test.LCCoreAbstractTest;
6+
import net.lecousin.framework.math.RangeBigInteger;
7+
import net.lecousin.framework.math.RangeInteger;
8+
import net.lecousin.framework.math.RangeLong;
9+
10+
import org.junit.Assert;
11+
import org.junit.Test;
12+
13+
public class TestRanges extends LCCoreAbstractTest {
14+
15+
@Test(timeout=30000)
16+
public void testRangeInteger() {
17+
RangeInteger r1 = new RangeInteger(10, 20);
18+
RangeInteger r2 = new RangeInteger(15, 25);
19+
20+
Assert.assertEquals(10, r1.min);
21+
Assert.assertEquals(20, r1.max);
22+
23+
// copy
24+
RangeInteger cr1 = new RangeInteger(r1);
25+
Assert.assertEquals(10, cr1.min);
26+
Assert.assertEquals(20, cr1.max);
27+
28+
// equals
29+
Assert.assertTrue(r1.equals(cr1));
30+
Assert.assertFalse(r1.equals(r2));
31+
Assert.assertFalse(r1.equals(new Object()));
32+
Assert.assertFalse(r1.equals(null));
33+
34+
// hashCode
35+
Assert.assertEquals(r1.hashCode(), cr1.hashCode());
36+
37+
// contains
38+
for (int i = 0; i < 50; ++i)
39+
if (i <10 || i > 20)
40+
Assert.assertFalse(Integer.toString(i), r1.contains(i));
41+
else
42+
Assert.assertTrue(Integer.toString(i), r1.contains(i));
43+
44+
// intersect
45+
RangeInteger inter = r1.intersect(r2);
46+
Assert.assertEquals(15, inter.min);
47+
Assert.assertEquals(20, inter.max);
48+
inter = r2.intersect(r1);
49+
Assert.assertEquals(15, inter.min);
50+
Assert.assertEquals(20, inter.max);
51+
inter = r1.intersect(cr1);
52+
Assert.assertEquals(10, inter.min);
53+
Assert.assertEquals(20, inter.max);
54+
inter = r1.intersect(new RangeInteger(100, 200));
55+
Assert.assertNull(inter);
56+
57+
// length
58+
Assert.assertEquals(11, r1.getLength());
59+
Assert.assertEquals(11, r2.getLength());
60+
61+
// toString
62+
Assert.assertEquals("[10-20]", r1.toString());
63+
}
64+
65+
@Test(timeout=30000)
66+
public void testRangeLong() {
67+
RangeLong r1 = new RangeLong(10, 20);
68+
RangeLong r2 = new RangeLong(15, 25);
69+
70+
Assert.assertEquals(10, r1.min);
71+
Assert.assertEquals(20, r1.max);
72+
73+
// copy
74+
RangeLong cr1 = new RangeLong(r1);
75+
Assert.assertEquals(10, cr1.min);
76+
Assert.assertEquals(20, cr1.max);
77+
78+
// equals
79+
Assert.assertTrue(r1.equals(cr1));
80+
Assert.assertFalse(r1.equals(r2));
81+
Assert.assertFalse(r1.equals(new Object()));
82+
Assert.assertFalse(r1.equals(null));
83+
84+
// hashCode
85+
Assert.assertEquals(r1.hashCode(), cr1.hashCode());
86+
87+
// contains
88+
for (int i = 0; i < 50; ++i)
89+
if (i <10 || i > 20)
90+
Assert.assertFalse(Integer.toString(i), r1.contains(i));
91+
else
92+
Assert.assertTrue(Integer.toString(i), r1.contains(i));
93+
94+
// intersect
95+
RangeLong inter = r1.intersect(r2);
96+
Assert.assertEquals(15, inter.min);
97+
Assert.assertEquals(20, inter.max);
98+
inter = r2.intersect(r1);
99+
Assert.assertEquals(15, inter.min);
100+
Assert.assertEquals(20, inter.max);
101+
inter = r1.intersect(cr1);
102+
Assert.assertEquals(10, inter.min);
103+
Assert.assertEquals(20, inter.max);
104+
inter = r1.intersect(new RangeLong(100, 200));
105+
Assert.assertNull(inter);
106+
107+
// length
108+
Assert.assertEquals(11, r1.getLength());
109+
Assert.assertEquals(11, r2.getLength());
110+
111+
// toString
112+
Assert.assertEquals("[10-20]", r1.toString());
113+
}
114+
115+
@Test(timeout=30000)
116+
public void testRangeBigInteger() {
117+
RangeBigInteger r1 = new RangeBigInteger(BigInteger.valueOf(10), BigInteger.valueOf(20));
118+
RangeBigInteger r2 = new RangeBigInteger(BigInteger.valueOf(15), BigInteger.valueOf(25));
119+
120+
Assert.assertEquals(10, r1.min.longValue());
121+
Assert.assertEquals(20, r1.max.longValue());
122+
123+
// copy
124+
RangeBigInteger cr1 = new RangeBigInteger(r1);
125+
Assert.assertEquals(10, cr1.min.longValue());
126+
Assert.assertEquals(20, cr1.max.longValue());
127+
128+
// equals
129+
Assert.assertTrue(r1.equals(cr1));
130+
Assert.assertFalse(r1.equals(r2));
131+
Assert.assertFalse(r1.equals(new Object()));
132+
Assert.assertFalse(r1.equals(null));
133+
134+
// hashCode
135+
Assert.assertEquals(r1.hashCode(), cr1.hashCode());
136+
137+
// contains
138+
for (int i = 0; i < 50; ++i)
139+
if (i <10 || i > 20)
140+
Assert.assertFalse(Integer.toString(i), r1.contains(BigInteger.valueOf(i)));
141+
else
142+
Assert.assertTrue(Integer.toString(i), r1.contains(BigInteger.valueOf(i)));
143+
144+
// intersect
145+
RangeBigInteger inter = r1.intersect(r2);
146+
Assert.assertEquals(15, inter.min.longValue());
147+
Assert.assertEquals(20, inter.max.longValue());
148+
inter = r2.intersect(r1);
149+
Assert.assertEquals(15, inter.min.longValue());
150+
Assert.assertEquals(20, inter.max.longValue());
151+
inter = r1.intersect(cr1);
152+
Assert.assertEquals(10, inter.min.longValue());
153+
Assert.assertEquals(20, inter.max.longValue());
154+
inter = r1.intersect(new RangeBigInteger(BigInteger.valueOf(100), BigInteger.valueOf(200)));
155+
Assert.assertNull(inter);
156+
157+
// length
158+
Assert.assertEquals(11, r1.getLength().longValue());
159+
Assert.assertEquals(11, r2.getLength().longValue());
160+
161+
// toString
162+
Assert.assertEquals("[10-20]", r1.toString());
163+
}
164+
165+
}

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/memory/TestCache.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
package net.lecousin.framework.core.tests.memory;
22

3+
import java.util.Collection;
4+
35
import net.lecousin.framework.core.test.LCCoreAbstractTest;
46
import net.lecousin.framework.memory.Cache;
7+
import net.lecousin.framework.memory.CacheManager.CachedData;
8+
import net.lecousin.framework.memory.IMemoryManageable.FreeMemoryLevel;
9+
import net.lecousin.framework.util.CloseableListenable;
510

611
import org.junit.Assert;
712
import org.junit.Test;
813

914
public class TestCache extends LCCoreAbstractTest {
1015

1116
@Test(timeout=30000)
12-
public void test() {
17+
public void test() throws Exception {
1318
Cache<String, Integer> cache = new Cache<>("Test cache", (integer) -> {
1419

1520
});
@@ -20,6 +25,7 @@ public void test() {
2025
cache.put("test", Integer.valueOf(1), null);
2126
Assert.assertEquals(1, cache.getCachedData().size());
2227
Assert.assertEquals(1, cache.getCachedData().iterator().next().cachedDataCurrentUsage());
28+
Assert.assertTrue(cache.getCachedData().iterator().next().cachedDataLastUsage() > 0);
2329
// use it with a second null user
2430
Assert.assertEquals(1, cache.get("test", null).intValue());
2531
Assert.assertEquals(1, cache.getCachedData().size());
@@ -28,8 +34,30 @@ public void test() {
2834
cache.free(Integer.valueOf(1), null);
2935
Assert.assertEquals(1, cache.getCachedData().size());
3036
Assert.assertEquals(1, cache.getCachedData().iterator().next().cachedDataCurrentUsage());
37+
// use it with a user
38+
CloseableListenable user = new CloseableListenable.Impl();
39+
Assert.assertEquals(1, cache.get("test", user).intValue());
40+
Assert.assertEquals(1, cache.getCachedData().size());
41+
Assert.assertEquals(2, cache.getCachedData().iterator().next().cachedDataCurrentUsage());
3142
// free for first null user
3243
cache.free(Integer.valueOf(1), null);
44+
Assert.assertEquals(1, cache.getCachedData().size());
45+
Assert.assertEquals(1, cache.getCachedData().iterator().next().cachedDataCurrentUsage());
46+
// close user
47+
user.close();
48+
Collection<? extends CachedData> col = cache.getCachedData();
49+
Assert.assertTrue(col.isEmpty() || col.iterator().next().cachedDataCurrentUsage() == 0);
50+
51+
cache.put("test2", Integer.valueOf(2), null);
52+
col = cache.getCachedData();
53+
cache.free(col.iterator().next());
54+
55+
cache.getItemsDescription();
56+
cache.freeMemory(FreeMemoryLevel.EXPIRED_ONLY);
57+
cache.freeMemory(FreeMemoryLevel.LOW);
58+
cache.freeMemory(FreeMemoryLevel.MEDIUM);
59+
cache.freeMemory(FreeMemoryLevel.URGENT);
60+
3361
// close
3462
cache.close();
3563
}

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/memory/TestObjectBank.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import net.lecousin.framework.core.test.LCCoreAbstractTest;
44
import net.lecousin.framework.memory.ObjectBank;
5+
import net.lecousin.framework.memory.IMemoryManageable.FreeMemoryLevel;
56

67
import org.junit.Assert;
78
import org.junit.Test;
@@ -27,6 +28,14 @@ public void test() {
2728
i = bank.get();
2829
Assert.assertTrue(i != null && i.intValue() >= 2 && i.intValue() <= 4);
2930
Assert.assertNull(bank.get());
31+
32+
bank.getDescription();
33+
bank.getItemsDescription();
34+
bank.freeMemory(FreeMemoryLevel.EXPIRED_ONLY);
35+
bank.freeMemory(FreeMemoryLevel.LOW);
36+
bank.freeMemory(FreeMemoryLevel.MEDIUM);
37+
bank.freeMemory(FreeMemoryLevel.URGENT);
38+
3039
bank.close();
3140
}
3241

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/memory/TestSimpleCache.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.Map;
55

66
import net.lecousin.framework.core.test.LCCoreAbstractTest;
7+
import net.lecousin.framework.memory.IMemoryManageable.FreeMemoryLevel;
78
import net.lecousin.framework.memory.SimpleCache;
89

910
import org.junit.Assert;
@@ -30,6 +31,14 @@ public void test() {
3031
cache.remove("1");
3132
Assert.assertEquals(1, cache.get("1").intValue());
3233
Assert.assertEquals(2, created.get(Integer.valueOf(1)).intValue());
34+
35+
Assert.assertEquals("test simple cache", cache.getDescription());
36+
cache.getItemsDescription();
37+
cache.freeMemory(FreeMemoryLevel.EXPIRED_ONLY);
38+
cache.freeMemory(FreeMemoryLevel.LOW);
39+
cache.freeMemory(FreeMemoryLevel.MEDIUM);
40+
cache.freeMemory(FreeMemoryLevel.URGENT);
41+
3342
cache.close();
3443
}
3544

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/xml/TestDOMModifications.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
import javax.xml.parsers.DocumentBuilderFactory;
44
import javax.xml.soap.Node;
55

6+
import net.lecousin.framework.xml.dom.XMLAttribute;
67
import net.lecousin.framework.xml.dom.XMLCData;
78
import net.lecousin.framework.xml.dom.XMLComment;
89
import net.lecousin.framework.xml.dom.XMLDocument;
10+
import net.lecousin.framework.xml.dom.XMLDocumentType;
911
import net.lecousin.framework.xml.dom.XMLElement;
1012
import net.lecousin.framework.xml.dom.XMLText;
1113

@@ -15,6 +17,7 @@
1517
import org.w3c.dom.CDATASection;
1618
import org.w3c.dom.Comment;
1719
import org.w3c.dom.Document;
20+
import org.w3c.dom.DocumentType;
1821
import org.w3c.dom.Element;
1922
import org.w3c.dom.Text;
2023

@@ -71,6 +74,17 @@ public void test() throws Exception {
7174
Assert.assertEquals(root2, doc2.getFirstChild());
7275
Assert.assertEquals(root2, doc2.getLastChild());
7376
checkDocument(doc1, doc2);
77+
// add doc type
78+
DocumentType docType1 = doc1.getImplementation().createDocumentType("test", "test", null);
79+
XMLDocumentType docType2 = doc2.getImplementation().createDocumentType("test", "test", null);
80+
doc1.appendChild(docType1);
81+
doc2.appendChild(docType2);
82+
checkDocument(doc1, doc2);
83+
Assert.assertEquals(root1, doc1.getFirstChild());
84+
Assert.assertEquals(docType1, doc1.getLastChild());
85+
Assert.assertEquals(docType2, doc2.getFirstChild());
86+
Assert.assertEquals(root2, doc2.getLastChild());
87+
doc2.getChildNodes();
7488
// add attribute
7589
root1.setAttribute("a1", "v1");
7690
root2.setAttribute("a1", "v1");
@@ -123,6 +137,12 @@ public void test() throws Exception {
123137
// get owner
124138
Assert.assertTrue(root2.getAttributeNodeNS("http://test3", "b").getOwnerElement() == root2);
125139
Assert.assertTrue(root2.getAttributeNodeNS("http://test3", "b").getOwnerDocument() == doc2);
140+
// get info
141+
XMLAttribute a = root2.getAttributeNodeNS("http://test3", "b");
142+
a.isId();
143+
a.getSpecified();
144+
a.getSchemaTypeInfo();
145+
a.setTextContent("");
126146
// change value
127147
// TODO root2.setAttributeNodeNS(root2.getAttributeNodeNS("http://test3", "b").cloneNode(true));
128148
// TODO checkDocument(doc1, doc2);

0 commit comments

Comments
 (0)