mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-27 06:23:08 +08:00
Add 2P-Set (Two-Phase Set) for both addition and removal operations in distributed systems (#4977)
This commit is contained in:
@ -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"));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user