package io.teknek.nibiru.keyvalue;
import java.util.ArrayList;
import java.util.Arrays;
import io.teknek.nibiru.coordinator.MajorityValueResultMerger;
import io.teknek.nibiru.transport.Response;
import org.junit.Assert;
import org.junit.Test;
public class TestMajorityMerger {
@Test
public void majority(){
MajorityValueResultMerger mm = new MajorityValueResultMerger();
Assert.assertEquals("a", mm.merge(Arrays.asList(
new Response().withProperty("payload", "a"),
new Response().withProperty("payload", "b"),
new Response().withProperty("payload", "a")
), null).get("payload"));
}
@Test
public void anotherMajority(){
MajorityValueResultMerger mm = new MajorityValueResultMerger();
Assert.assertEquals("b", mm.merge(Arrays.asList(
new Response().withProperty("payload", "a"),
new Response().withProperty("payload", "b"),
new Response().withProperty("payload", "b")
), null).get("payload"));
}
@Test
public void aPlurality(){
MajorityValueResultMerger mm = new MajorityValueResultMerger();
Assert.assertEquals("a", mm.merge(Arrays.asList(
new Response().withProperty("payload", "a"),
new Response().withProperty("payload", "a"),
new Response().withProperty("payload", "b"),
new Response().withProperty("payload", "b")
), null).get("payload"));
Assert.assertEquals("a", mm.merge(Arrays.asList(
new Response().withProperty("payload", "b"),
new Response().withProperty("payload", "b"),
new Response().withProperty("payload", "a"),
new Response().withProperty("payload", "a")
), null).get("payload"));
Assert.assertEquals(null, mm.merge(new ArrayList<Response>(), null).get("payload"));
}
}