Package rabbit.data.internal.xml.merge

Source Code of rabbit.data.internal.xml.merge.MergersTest

package rabbit.data.internal.xml.merge;

import rabbit.data.internal.xml.schema.events.PartEventType;

import com.google.common.collect.Lists;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.sameInstance;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.matchers.JUnitMatchers.hasItems;

import org.junit.Test;

import java.util.Collection;
import java.util.Collections;
import java.util.List;

/**
* @see Mergers
*/
public class MergersTest {

  @Test
  public void testMerge_collectionAndElement_mergerNull() {
    Collection<String> data = Lists.newArrayList("1");
    assertThat(Mergers.merge(null, data, "2"), sameInstance(data));
    assertThat(data.size(), equalTo(2));
    assertThat(data, hasItems("1", "2"));
  }

  @Test(expected = NullPointerException.class)
  public void testMerge_collectionAndElement_collectionNull() {
    Mergers.merge(new PartEventTypeMerger(), null, new PartEventType());
  }

  @Test(expected = NullPointerException.class)
  public void testMerge_collectionAndElement_elementNull() {
    Mergers.merge(new PartEventTypeMerger(),
        Collections.<PartEventType> emptyList(), null);
  }

  @Test(expected = NullPointerException.class)
  public void testMerge_collectionAndCollection_firstCollectionNull() {
    Mergers.merge(new PartEventTypeMerger(), null, Collections
        .<PartEventType> emptyList());
  }

  @Test(expected = NullPointerException.class)
  public void testMerge_collectionAndCollection_secondCollectionNull() {
    Mergers.merge(new PartEventTypeMerger(), Collections
        .<PartEventType> emptyList(), null);
  }

  @Test
  public void testMerge_collectionAndCollection_mergerNull() {
    Collection<Integer> main = Lists.newArrayList(1);
    Collection<Integer> sub = Lists.newArrayList(2);
    Collection<Integer> subClone = Lists.newArrayList(sub);
    assertThat(Mergers.merge(null, main, sub), sameInstance(main));
   
    // Assert "main" is changed:
    assertThat(main.size(), equalTo(2));
    assertThat(main, hasItems(1, 2));
   
    // Assert "sub" is unchanged:
    assertThat(sub, equalTo(subClone));
  }

  @Test
  public void testMerge_collectionAndElement_mergeableElements() {
    String id = "abc";
    PartEventType type1 = new PartEventType();
    type1.setDuration(11);
    type1.setPartId(id);
    PartEventType type2 = new PartEventType();
    type2.setDuration(9823);
    type2.setPartId(id);
    IMerger<PartEventType> merger = new PartEventTypeMerger();
    // Check the elements we just created are mergeable
    assertTrue(merger.isMergeable(type1, type2));

    List<PartEventType> elements = Lists.newArrayList(type1);
    assertSame(elements, Mergers.merge(merger, elements, type2));

    // Check the elements are merged:
    assertEquals(1, elements.size());
    PartEventType result = elements.get(0);
    assertEquals(id, result.getPartId());
    assertEquals(type1.getDuration() + type2.getDuration(),
        result.getDuration());
  }
 
  @Test
  public void testMerge_collectionAndElement_unmergeableElements() {
    String id1 = "13458";
    String id2 = "abcdef";
    long duration1 = 139834;
    long duration2 = 983471;
    PartEventType type1 = new PartEventType();
    PartEventType type2 = new PartEventType();
    type1.setDuration(duration1);
    type2.setDuration(duration2);
    type1.setPartId(id1);
    type2.setPartId(id2);
   
    IMerger<PartEventType> merger = new PartEventTypeMerger();
    // Check the elements we just created are not mergeable
    assertFalse(merger.isMergeable(type1, type2));

    List<PartEventType> collection = Lists.newArrayList(type1);
    assertSame(collection, Mergers.merge(merger, collection, type2));

    // Check the elements are merged:
    assertEquals(2, collection.size());
    assertSame(type1, collection.get(0));
    assertSame(type2, collection.get(1));
    assertEquals(id1, type1.getPartId());
    assertEquals(id2, type2.getPartId());
    assertEquals(duration1, type1.getDuration());
    assertEquals(duration2, type2.getDuration());
  }
}
TOP

Related Classes of rabbit.data.internal.xml.merge.MergersTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.