Add 2P-Set (Two-Phase Set) for both addition and removal operations in distributed systems (#4977)

This commit is contained in:
Niklas Hoefflin
2023-12-07 16:23:22 +01:00
committed by GitHub
parent 36580bac1e
commit 249ee1dc99
3 changed files with 155 additions and 1 deletions

View File

@ -0,0 +1,68 @@
package com.thealgorithms.datastructures.crdt;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class TwoPSetTest {
private TwoPSet set;
@BeforeEach
void setUp() {
set = new TwoPSet();
}
@Test
void testLookup() {
set.add("A");
assertTrue(set.lookup("A"));
assertFalse(set.lookup("B"));
set.remove("A");
assertFalse(set.lookup("A"));
}
@Test
void testAdd() {
set.add("A");
assertTrue(set.lookup("A"));
}
@Test
void testRemove() {
set.add("A");
set.remove("A");
assertFalse(set.lookup("A"));
}
@Test
void testCompare() {
TwoPSet set1 = new TwoPSet();
set1.add("A");
set1.add("B");
TwoPSet set2 = new TwoPSet();
set2.add("A");
assertFalse(set1.compare(set2));
set2.add("B");
assertTrue(set1.compare(set2));
set1.remove("A");
assertFalse(set1.compare(set2));
set2.remove("A");
assertTrue(set1.compare(set2));
}
@Test
void testMerge() {
TwoPSet set1 = new TwoPSet();
set1.add("A");
set1.add("B");
TwoPSet set2 = new TwoPSet();
set2.add("B");
set2.add("C");
TwoPSet mergedSet = set1.merge(set2);
assertTrue(mergedSet.lookup("A"));
assertTrue(mergedSet.lookup("B"));
assertTrue(mergedSet.lookup("C"));
}
}