Package org.eclipse.egit.core.test.rebase

Source Code of org.eclipse.egit.core.test.rebase.RebaseInteractivePlanTest$JoinedListTest

/*******************************************************************************
* Copyright (c) 2013 SAP AG.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    Tobias Pfeifer (SAP AG) - initial implementation
*******************************************************************************/
package org.eclipse.egit.core.test.rebase;

import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

import org.eclipse.egit.core.internal.rebase.RebaseInteractivePlan;
import org.eclipse.egit.core.internal.rebase.RebaseInteractivePlan.JoinedList;
import org.eclipse.egit.core.internal.rebase.RebaseInteractivePlan.MoveHelper;
import org.eclipse.egit.core.internal.rebase.RebaseInteractivePlan.PlanElement;
import org.eclipse.egit.core.test.GitTestCase;
import org.eclipse.egit.core.test.TestRepository;
import org.eclipse.jgit.lib.Constants;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;

public class RebaseInteractivePlanTest extends GitTestCase {

  private RebaseInteractivePlan plan;

  private ArrayList<PlanElement> toDoElements;

  private MoveHelper moveHelper;

  private TestRepository testRepository;

  @Before
  public void setUp() throws Exception {
    super.setUp();
    gitDir = new File(project.getProject().getLocationURI().getPath(),
        Constants.DOT_GIT);
    testRepository = new TestRepository(gitDir);
    testRepository.connect(project.getProject());
    plan = RebaseInteractivePlan.getPlan(testRepository.getRepository());
    toDoElements = new ArrayList<PlanElement>();
    moveHelper = new RebaseInteractivePlan.MoveHelper(toDoElements, plan);
  }

  @After
  public void tearDown() throws Exception {
    plan.dispose();
    testRepository.dispose();
    super.tearDown();
  }


  @Test
  public void parseTest() {
    // how to mock repository?
  }

  @Test
  public void persistTest() {
    // how to mock repository?
  }

  @SuppressWarnings("boxing")
  private PlanElement createPlanElement(boolean isComment) {
    PlanElement element1 = Mockito.mock(PlanElement.class);
    Mockito.when(element1.isComment()).thenReturn(isComment);
    return element1;
  }

  @Test
  public void moveUpTestOneElement() throws Exception {
    PlanElement element1 = createPlanElement(false);
    toDoElements.add(element1);
    moveHelper.moveTodoEntryUp(element1);
    assertEquals(element1, toDoElements.get(0));
  }

  @Test
  public void moveUpTestTwoElements() throws Exception {
    PlanElement element1 = createPlanElement(false);
    PlanElement element2 = createPlanElement(false);
    toDoElements.add(element1);
    toDoElements.add(element2);
    moveHelper.moveTodoEntryUp(element2);
    assertEquals(element2, toDoElements.get(0));
    assertEquals(element1, toDoElements.get(1));
    moveHelper.moveTodoEntryUp(element2);
    assertEquals(element2, toDoElements.get(0));
    assertEquals(element1, toDoElements.get(1));
    moveHelper.moveTodoEntryUp(element1);
    assertEquals(element1, toDoElements.get(0));
    assertEquals(element2, toDoElements.get(1));
  }

  @Test
  public void moveUpTestThreeElementsWithOneComment() throws Exception {
    PlanElement element1 = createPlanElement(false);
    PlanElement element2 = createPlanElement(true);
    PlanElement element3 = createPlanElement(false);
    toDoElements.add(element1);
    toDoElements.add(element2);
    toDoElements.add(element3);
    moveHelper.moveTodoEntryUp(element3);
    assertEquals(element3, toDoElements.get(0));
    assertEquals(element1, toDoElements.get(1));
    assertEquals(element2, toDoElements.get(2));
  }

  @Test
  public void moveDownTestOneElement() throws Exception {
    PlanElement element1 = createPlanElement(false);
    toDoElements.add(element1);
    moveHelper.moveTodoEntryDown(element1);
    assertEquals(element1, toDoElements.get(0));
  }

  @Test
  public void moveDownTestTwoElements() throws Exception {
    PlanElement element1 = createPlanElement(false);
    PlanElement element2 = createPlanElement(false);
    toDoElements.add(element1);
    toDoElements.add(element2);
    moveHelper.moveTodoEntryDown(element1);
    assertEquals(element2, toDoElements.get(0));
    assertEquals(element1, toDoElements.get(1));
    moveHelper.moveTodoEntryDown(element1);
    assertEquals(element2, toDoElements.get(0));
    assertEquals(element1, toDoElements.get(1));
    moveHelper.moveTodoEntryDown(element2);
    assertEquals(element1, toDoElements.get(0));
    assertEquals(element2, toDoElements.get(1));
  }

  @Test
  public void moveDownTestThreeElementsWithOneComment() throws Exception {
    PlanElement element1 = createPlanElement(false);
    PlanElement element2 = createPlanElement(true);
    PlanElement element3 = createPlanElement(false);
    toDoElements.add(element1);
    toDoElements.add(element2);
    toDoElements.add(element3);
    moveHelper.moveTodoEntryDown(element1);
    assertEquals(element2, toDoElements.get(0));
    assertEquals(element3, toDoElements.get(1));
    assertEquals(element1, toDoElements.get(2));
  }

  public static class JoinedListTest {
    private RebaseInteractivePlan.JoinedList<List<Integer>, Integer> joined;

    private List<Integer> testData1;

    private List<Integer> testData2;

    @Before
    public void beforeTest() {
      testData1 = new LinkedList<Integer>();
      for (int i = 1; i <= 4; i++) {
        testData1.add(Integer.valueOf(i));
      }
      testData2 = new LinkedList<Integer>();
      for (int i = 5; i <= 10; i++) {
        testData2.add(Integer.valueOf(i));
      }
      joined = JoinedList.wrap(testData1, testData2);
    }

    @Test
    public void addTest() {
      joined.add(Integer.valueOf(11));
      assertEquals("[1, 2, 3, 4]", joined.getFirstList().toString());
      assertEquals("[5, 6, 7, 8, 9, 10, 11]", joined.getSecondList()
          .toString());
      assertEquals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]",
          joined.toString());

      joined.add(Integer.valueOf(12));
      assertEquals("[1, 2, 3, 4]", joined.getFirstList().toString());
      assertEquals("[5, 6, 7, 8, 9, 10, 11, 12]", joined.getSecondList()
          .toString());
      assertEquals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]",
          joined.toString());
    }

    @Test
    public void addToIndexTest() {
      joined.add(0, Integer.valueOf(0));
      assertEquals("[0, 1, 2, 3, 4]", joined.getFirstList().toString());
      assertEquals("[5, 6, 7, 8, 9, 10]", joined.getSecondList()
          .toString());
      assertEquals("[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]",
          joined.toString());

      joined.add(5, Integer.valueOf(-5));
      assertEquals("[0, 1, 2, 3, 4]", joined.getFirstList().toString());
      assertEquals("[-5, 5, 6, 7, 8, 9, 10]", joined.getSecondList()
          .toString());
      assertEquals("[0, 1, 2, 3, 4, -5, 5, 6, 7, 8, 9, 10]",
          joined.toString());

      joined.add(5, Integer.valueOf(-5));
      assertEquals("[0, 1, 2, 3, 4]", joined.getFirstList().toString());
      assertEquals("[-5, -5, 5, 6, 7, 8, 9, 10]", joined.getSecondList()
          .toString());
      assertEquals("[0, 1, 2, 3, 4, -5, -5, 5, 6, 7, 8, 9, 10]",
          joined.toString());

      joined.add(4, Integer.valueOf(-4));
      assertEquals("[0, 1, 2, 3, -4, 4]", joined.getFirstList()
          .toString());
      assertEquals("[-5, -5, 5, 6, 7, 8, 9, 10]", joined.getSecondList()
          .toString());
      assertEquals("[0, 1, 2, 3, -4, 4, -5, -5, 5, 6, 7, 8, 9, 10]",
          joined.toString());

      joined.add(14, Integer.valueOf(11));
      assertEquals("[0, 1, 2, 3, -4, 4]", joined.getFirstList()
          .toString());
      assertEquals("[-5, -5, 5, 6, 7, 8, 9, 10, 11]", joined
          .getSecondList().toString());
      assertEquals("[0, 1, 2, 3, -4, 4, -5, -5, 5, 6, 7, 8, 9, 10, 11]",
          joined.toString());
    }

    @SuppressWarnings("boxing")
    @Test
    public void addAllTest() {
      joined.addAll(Arrays.asList(11, 12, 13));
      assertEquals("[5, 6, 7, 8, 9, 10, 11, 12, 13]", joined
          .getSecondList().toString());
      assertEquals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]",
          joined.toString());
    }

    @SuppressWarnings("boxing")
    @Test
    public void addAllToIndexInFirstListTest() {
      joined.addAll(3, Arrays.asList(-4, -44, -44));
      assertEquals("[1, 2, 3, -4, -44, -44, 4]", joined.getFirstList()
          .toString());
    }

    @SuppressWarnings("boxing")
    @Test
    public void addAllToIndexInSecondeListTest() {
      joined.addAll(4, Arrays.asList(-5, -55, -55));
      assertEquals("[1, 2, 3, 4]", joined.getFirstList().toString());
      assertEquals("[-5, -55, -55, 5, 6, 7, 8, 9, 10]", joined
          .getSecondList().toString());
    }

    @Test
    public void clearTest() {
      joined.clear();
      assertTrue(testData1.isEmpty());
      assertTrue(testData2.isEmpty());
    }

    @Test
    public void containsTest() {
      Integer containedInFirst = Integer.valueOf(4);
      Integer containedInSecond = Integer.valueOf(6);
      Integer notContained = Integer.valueOf(-1);

      assertTrue(joined.contains(containedInFirst));
      assertTrue(joined.contains(containedInSecond));
      assertFalse(joined.contains(notContained));
      checkOriginalDataHasNotBeenAltered();
    }

    @SuppressWarnings("boxing")
    @Test
    public void containsAllTest() {
      List<Integer> containedInFirst = Arrays.asList(1, 4);
      List<Integer> containedInSecond = Arrays.asList(5, 10);
      List<Integer> containedBoth = Arrays.asList(1, 4, 5, 10);
      List<Integer> notContained = Arrays.asList(1, 4, 5, 10, -1);

      assertTrue(joined.containsAll(containedInFirst));
      assertTrue(joined.containsAll(containedInSecond));
      assertTrue(joined.containsAll(containedBoth));
      assertFalse(joined.containsAll(notContained));
      checkOriginalDataHasNotBeenAltered();
    }

    @Test
    public void getTest() {
      assertEquals(Integer.valueOf(1), joined.get(0));
      assertEquals(Integer.valueOf(1), joined.getFirstList().get(0));
      assertEquals(Integer.valueOf(10), joined.get(9));
      assertEquals(Integer.valueOf(10), joined.getSecondList().get(5));

      Integer toBeAdded = Integer.valueOf(-5);
      joined.getSecondList().add(0, toBeAdded);
      assertEquals(toBeAdded, joined.get(4));
    }

    @Test
    public void isEmptyTest() {
      testData1.clear();
      testData2.clear();
      assertTrue(joined.isEmpty());
      assertEquals(0, joined.size());
    }

    @Test
    public void indexOfTest() {
      Integer lastInSecond = Integer.valueOf(10);
      Integer firstInSecond = Integer.valueOf(5);
      Integer lastInFirst = Integer.valueOf(4);
      Integer firstInFirst = Integer.valueOf(1);

      testData1.addAll(testData1);
      testData2.addAll(testData2);
      // 1-2-3-4-1-2-3-4-5-6-7-8-9-10-5-6-7-8-9-10 --list
      // 0-1-2-3-4-5-6-7-8-9-0-1-2-.3-4-5-6-7-8-.9 --index

      assertEquals(13, joined.indexOf(lastInSecond));
      assertEquals(8, joined.indexOf(firstInSecond));
      assertEquals(3, joined.indexOf(lastInFirst));
      assertEquals(0, joined.indexOf(firstInFirst));
    }

    @Test
    public void lastIndexOfTest() {
      Integer lastInSecond = Integer.valueOf(10);
      Integer firstInSecond = Integer.valueOf(5);
      Integer lastInFirst = Integer.valueOf(4);
      Integer firstInFirst = Integer.valueOf(1);

      testData1.addAll(testData1);
      testData2.addAll(testData2);
      // 1-2-3-4-1-2-3-4-5-6-7-8-9-10-5-6-7-8-9-10 --list
      // 0-1-2-3-4-5-6-7-8-9-0-1-2-.3-4-5-6-7-8-.9 --index

      assertEquals(19, joined.lastIndexOf(lastInSecond));
      assertEquals(14, joined.lastIndexOf(firstInSecond));
      assertEquals(7, joined.lastIndexOf(lastInFirst));
      assertEquals(4, joined.lastIndexOf(firstInFirst));
    }

    @Test
    public void listIteratorTest() {
      ListIterator<Integer> litr = joined.listIterator(3);
      assertEquals(2, litr.previousIndex());
      assertEquals(3, litr.nextIndex());

      Integer previous = litr.previous();
      litr.next();
      Integer next = litr.next();

      assertEquals(next, litr.previous());
      assertEquals(previous, litr.previous());
    }

    @Test
    public void removeElementTest() {
      joined.remove(Integer.valueOf(1));
      joined.remove(Integer.valueOf(6));
      joined.remove(Integer.valueOf(10));

      assertEquals("[2, 3, 4, 5, 7, 8, 9]", joined.toString());
      assertEquals("[2, 3, 4]", joined.getFirstList().toString());
      assertEquals("[5, 7, 8, 9]", joined.getSecondList().toString());
    }

    @Test
    public void removeIndexTest() {
      joined.remove(9);
      assertEquals("[1, 2, 3, 4, 5, 6, 7, 8, 9]", joined.toString());
      assertEquals("[1, 2, 3, 4]", joined.getFirstList().toString());
      assertEquals("[5, 6, 7, 8, 9]", joined.getSecondList().toString());

      joined.remove(3);
      assertEquals("[1, 2, 3, 5, 6, 7, 8, 9]", joined.toString());
      assertEquals("[1, 2, 3]", joined.getFirstList().toString());
      assertEquals("[5, 6, 7, 8, 9]", joined.getSecondList().toString());

      joined.remove(3);
      assertEquals("[1, 2, 3, 6, 7, 8, 9]", joined.toString());
      assertEquals("[1, 2, 3]", joined.getFirstList().toString());
      assertEquals("[6, 7, 8, 9]", joined.getSecondList().toString());
    }

    @SuppressWarnings("boxing")
    @Test
    public void removeAllTest() {
      joined.removeAll(Arrays.asList(2, 3, 6));
      assertEquals("[1, 4, 5, 7, 8, 9, 10]", joined.toString());
      assertEquals("[1, 4]", joined.getFirstList().toString());
      assertEquals("[5, 7, 8, 9, 10]", joined.getSecondList().toString());
    }


    @Test
    public void setTest() {
      joined.set(5, Integer.valueOf(-6));
      joined.set(4, Integer.valueOf(-5));
      joined.set(3, Integer.valueOf(-4));
      assertEquals("[1, 2, 3, -4, -5, -6, 7, 8, 9, 10]",
          joined.toString());
      assertEquals("[1, 2, 3, -4]", joined.getFirstList().toString());
      assertEquals("[-5, -6, 7, 8, 9, 10]", joined.getSecondList()
          .toString());
    }

    private void checkOriginalDataHasNotBeenAltered() {
      assertEquals("[1, 2, 3, 4]", testData1.toString());
      assertEquals("[5, 6, 7, 8, 9, 10]", testData2.toString());
    }

    @Test
    public void sizeTest() {
      assertEquals(testData1.size() + testData2.size(), joined.size());
      checkOriginalDataHasNotBeenAltered();
    }

    @Test
    public void subListTest() {
      List<Integer> subList1 = joined.subList(0, 4);
      assertEquals("[1, 2, 3, 4]", subList1.toString());
      List<Integer> subList2 = joined.subList(4, 10);
      assertEquals("[5, 6, 7, 8, 9, 10]", subList2.toString());
      List<Integer> subList3 = joined.subList(3, 7);
      assertEquals("[4, 5, 6, 7]", subList3.toString());
      checkOriginalDataHasNotBeenAltered();
    }

    @SuppressWarnings("boxing")
    @Test
    public void toArrayTest() {
      assertArrayEquals(new Integer[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 },
          joined.toArray());
    }
  }
}
TOP

Related Classes of org.eclipse.egit.core.test.rebase.RebaseInteractivePlanTest$JoinedListTest

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.