Add PN-Counter (#4974)

This commit is contained in:
Niklas Hoefflin
2023-12-04 17:22:02 +01:00
committed by GitHub
parent e759544c33
commit 3001620c1e
3 changed files with 156 additions and 0 deletions

View File

@ -0,0 +1,54 @@
package com.thealgorithms.datastructures.crdt;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
public class PNCounterTest {
@Test
public void testIncrement() {
PNCounter counter = new PNCounter(0, 3);
counter.increment();
assertEquals(1, counter.value());
}
@Test
public void testDecrement() {
PNCounter counter = new PNCounter(0, 3);
counter.decrement();
assertEquals(-1, counter.value());
}
@Test
public void testIncrementAndDecrement() {
PNCounter counter = new PNCounter(0, 3);
counter.increment();
counter.increment();
counter.decrement();
assertEquals(1, counter.value());
}
@Test
public void testCompare() {
PNCounter counter1 = new PNCounter(0, 3);
counter1.increment();
PNCounter counter2 = new PNCounter(1, 3);
assertTrue(counter1.compare(counter2));
counter2.increment();
assertTrue(counter2.compare(counter1));
counter1.decrement();
assertFalse(counter1.compare(counter2));
}
@Test
public void testMerge() {
PNCounter counter1 = new PNCounter(0, 3);
counter1.increment();
counter1.increment();
PNCounter counter2 = new PNCounter(1, 3);
counter2.increment();
counter1.merge(counter2);
assertEquals(3, counter1.value());
}
}