Skip to content

Commit 470760a

Browse files
committed
Refactor LWWElementSetTest:
- Updated existing test cases to align with changes in LWWElementSet implementation - Improved test readability and coverage
1 parent cbbc46c commit 470760a

File tree

1 file changed

+56
-68
lines changed

1 file changed

+56
-68
lines changed
Lines changed: 56 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,96 @@
11
package com.thealgorithms.datastructures.crdt;
22

3-
import static org.junit.jupiter.api.Assertions.assertFalse;
4-
import static org.junit.jupiter.api.Assertions.assertTrue;
5-
6-
import org.junit.jupiter.api.BeforeEach;
73
import org.junit.jupiter.api.Test;
4+
import java.time.Instant;
5+
import static org.junit.jupiter.api.Assertions.*;
86

97
class LWWElementSetTest {
108

11-
private LWWElementSet set;
12-
private final Bias bias = Bias.ADDS;
13-
14-
@BeforeEach
15-
void setUp() {
16-
set = new LWWElementSet();
17-
}
18-
199
@Test
20-
void testAdd() {
21-
Element element = new Element("key1", 1, bias);
22-
set.add(element);
23-
24-
assertTrue(set.lookup(element));
10+
void testAddElement() {
11+
LWWElementSet<String> set = new LWWElementSet<>();
12+
set.add("A");
13+
assertTrue(set.lookup("A"));
2514
}
2615

2716
@Test
28-
void testRemove() {
29-
Element element = new Element("key1", 1, bias);
30-
set.add(element);
31-
set.remove(element);
32-
33-
assertFalse(set.lookup(element));
17+
void testRemoveElement() {
18+
LWWElementSet<String> set = new LWWElementSet<>();
19+
set.add("A");
20+
set.remove("A");
21+
assertFalse(set.lookup("A"));
3422
}
3523

3624
@Test
37-
void testRemoveNonexistentElement() {
38-
Element element = new Element("key1", 1, bias);
39-
set.remove(element);
40-
41-
assertFalse(set.lookup(element));
25+
void testLookupWithoutAdding() {
26+
LWWElementSet<String> set = new LWWElementSet<>();
27+
assertFalse(set.lookup("A"));
4228
}
4329

4430
@Test
45-
void testLookupNonexistentElement() {
46-
Element element = new Element("key1", 1, bias);
31+
void testLookupLaterTimestampsFalse() {
32+
LWWElementSet<String> set = new LWWElementSet<>();
33+
34+
set.addSet.put("A", new Element<>("A", Instant.now()));
35+
set.removeSet.put("A", new Element<>("A", Instant.now().plusSeconds(10)));
4736

48-
assertFalse(set.lookup(element));
37+
assertFalse(set.lookup("A"));
4938
}
5039

5140
@Test
52-
void testCompareEqualSets() {
53-
LWWElementSet otherSet = new LWWElementSet();
41+
void testLookupEarlierTimestampsTrue() {
42+
LWWElementSet<String>set = new LWWElementSet<>();
5443

55-
Element element = new Element("key1", 1, bias);
56-
set.add(element);
57-
otherSet.add(element);
44+
set.addSet.put("A", new Element<>("A", Instant.now()));
45+
set.removeSet.put("A", new Element<>("A", Instant.now().minusSeconds(10)));
5846

59-
assertTrue(set.compare(otherSet));
60-
61-
otherSet.add(new Element("key2", 2, bias));
62-
assertTrue(set.compare(otherSet));
47+
assertTrue(set.lookup("A"));
6348
}
6449

6550
@Test
66-
void testCompareDifferentSets() {
67-
LWWElementSet otherSet = new LWWElementSet();
68-
69-
Element element1 = new Element("key1", 1, bias);
70-
Element element2 = new Element("key2", 2, bias);
71-
72-
set.add(element1);
73-
otherSet.add(element2);
74-
75-
assertFalse(set.compare(otherSet));
51+
void testLookupWithConcurrentTimestamps() {
52+
LWWElementSet<String> set = new LWWElementSet<>();
53+
Instant now = Instant.now();
54+
set.addSet.put("A", new Element<>("A", now));
55+
set.removeSet.put("A", new Element<>("A", now));
56+
assertFalse(set.lookup("A"));
7657
}
7758

7859
@Test
79-
void testMerge() {
80-
LWWElementSet otherSet = new LWWElementSet();
60+
void testMergeTwoSets() {
61+
LWWElementSet<String> set1 = new LWWElementSet<>();
62+
LWWElementSet<String> set2 = new LWWElementSet<>();
8163

82-
Element element1 = new Element("key1", 1, bias);
83-
Element element2 = new Element("key2", 2, bias);
64+
set1.add("A");
65+
set2.add("B");
66+
set2.remove("A");
8467

85-
set.add(element1);
86-
otherSet.add(element2);
68+
set1.merge(set2);
8769

88-
set.merge(otherSet);
89-
90-
assertTrue(set.lookup(element1));
91-
assertTrue(set.lookup(element2));
70+
assertFalse(set1.lookup("A"));
71+
assertTrue(set1.lookup("B"));
9272
}
9373

9474
@Test
95-
void testCompareTimestampsEqualTimestamps() {
96-
LWWElementSet lwwElementSet = new LWWElementSet();
75+
void testMergeWithConflictingTimestamps() {
76+
LWWElementSet<String> set1 = new LWWElementSet<>();
77+
LWWElementSet<String> set2 = new LWWElementSet<>();
9778

98-
Element e1 = new Element("key1", 10, Bias.REMOVALS);
99-
Element e2 = new Element("key1", 10, Bias.REMOVALS);
79+
Instant now = Instant.now();
80+
set1.addSet.put("A", new Element<>("A", now.minusSeconds(10)));
81+
set2.addSet.put("A", new Element<>("A", now));
10082

101-
assertTrue(lwwElementSet.compareTimestamps(e1, e2));
83+
set1.merge(set2);
10284

103-
e1 = new Element("key1", 10, Bias.ADDS);
104-
e2 = new Element("key1", 10, Bias.ADDS);
85+
assertTrue(set1.lookup("A"));
86+
}
10587

106-
assertFalse(lwwElementSet.compareTimestamps(e1, e2));
88+
@Test
89+
void testRemoveOlderThanAdd() {
90+
LWWElementSet<String> set = new LWWElementSet<>();
91+
Instant now = Instant.now();
92+
set.addSet.put("A", new Element<>("A", now));
93+
set.removeSet.put("A", new Element<>("A", now.minusSeconds(10)));
94+
assertTrue(set.lookup("A"));
10795
}
10896
}

0 commit comments

Comments
 (0)