package com.intrbiz.bergamot.config.resolver;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
import org.junit.Test;
import com.intrbiz.bergamot.config.resolver.stratergy.SmartMergeSet;
public class TestSmartMergeSet
{
@Test
public void testMostNull()
{
Set<String> l = new LinkedHashSet<String>(Arrays.asList("a", "b", "c"));
Set<String> m = null;
Set<String> r = new SmartMergeSet().resolve(m, l);
assertThat(r, is(not(nullValue())));
assertThat(r.isEmpty(), is(false));
assertThat(r, contains("a", "b", "c"));
}
@Test
public void testLeastNull()
{
Set<String> l = null;
Set<String> m = new LinkedHashSet<String>(Arrays.asList("d", "e", "f"));
Set<String> r = new SmartMergeSet().resolve(m, l);
assertThat(r, is(not(nullValue())));
assertThat(r.isEmpty(), is(false));
assertThat(r, contains("d", "e", "f"));
}
@Test
public void testBothNull()
{
Set<String> l = null;
Set<String> m = null;
Set<String> r = new SmartMergeSet().resolve(m, l);
assertThat(r, is(not(nullValue())));
assertThat(r.isEmpty(), is(true));
}
@Test
public void testNullValueMerge()
{
Set<String> l = new LinkedHashSet<String>(Arrays.asList("a", null, "c"));
Set<String> m = new LinkedHashSet<String>(Arrays.asList("d", "e", null));
Set<String> r = new SmartMergeSet().resolve(m, l);
assertThat(r, is(not(nullValue())));
assertThat(r.isEmpty(), is(false));
assertThat(r, contains("a", "c", "d", "e"));
}
@Test
public void testPlainMerge()
{
Set<String> l = new LinkedHashSet<String>(Arrays.asList("a", "b", "c"));
Set<String> m = new LinkedHashSet<String>(Arrays.asList("d", "e", "f"));
Set<String> r = new SmartMergeSet().resolve(m, l);
assertThat(r, is(not(nullValue())));
assertThat(r.isEmpty(), is(false));
assertThat(r, contains("a", "b", "c", "d", "e", "f"));
}
@Test
public void testUniqueMerge()
{
Set<String> m = new LinkedHashSet<String>(Arrays.asList("c", "d", "e"));
Set<String> l = new LinkedHashSet<String>(Arrays.asList("a", "b", "c"));
Set<String> r = new SmartMergeSet().resolve(m, l);
assertThat(r, is(not(nullValue())));
assertThat(r.isEmpty(), is(false));
assertThat(r, contains("a", "b", "c", "d", "e"));
}
@Test
public void testAddMerge()
{
Set<String> l = new LinkedHashSet<String>(Arrays.asList("+a", "+b", "+c"));
Set<String> m = new LinkedHashSet<String>(Arrays.asList("+d", "+e", "+f"));
Set<String> r = new SmartMergeSet().resolve(m, l);
assertThat(r, is(not(nullValue())));
assertThat(r.isEmpty(), is(false));
assertThat(r, contains("a", "b", "c", "d", "e", "f"));
}
@Test
public void testAddPlainMerge()
{
Set<String> l = new LinkedHashSet<String>(Arrays.asList("a", "+b", "c"));
Set<String> m = new LinkedHashSet<String>(Arrays.asList("+d", "e", "+f"));
Set<String> r = new SmartMergeSet().resolve(m, l);
assertThat(r, is(not(nullValue())));
assertThat(r.isEmpty(), is(false));
assertThat(r, contains("a", "b", "c", "d", "e", "f"));
}
@Test
public void testAddRemoveMerge()
{
Set<String> l = new LinkedHashSet<String>(Arrays.asList("+a", "+b", "+c"));
Set<String> m = new LinkedHashSet<String>(Arrays.asList("-a", "+d", "+e", "+f", "-b"));
Set<String> r = new SmartMergeSet().resolve(m, l);
assertThat(r, is(not(nullValue())));
assertThat(r.isEmpty(), is(false));
assertThat(r, contains("c", "d", "e", "f"));
}
@Test
public void testAddRemovePlainMerge()
{
Set<String> l = new LinkedHashSet<String>(Arrays.asList("+a", "b", "c"));
Set<String> m = new LinkedHashSet<String>(Arrays.asList("-a", "+d", "e", "+f", "-b"));
Set<String> r = new SmartMergeSet().resolve(m, l);
assertThat(r, is(not(nullValue())));
assertThat(r.isEmpty(), is(false));
assertThat(r, contains("c", "d", "e", "f"));
}
}