Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDariusz Luksza2011-02-21 23:24:17 +0000
committerDariusz Luksza2011-02-23 15:56:44 +0000
commited2bf5517b9f40c78fbe8b66b74f847ddab46f0f (patch)
treec218cf3a64217da0be52ae0448ccb14dd13ac890 /org.eclipse.egit.ui.test/src/org
parent73c0e3f89bf24a7407abb92492df28957a3a73c1 (diff)
downloadegit-ed2bf5517b9f40c78fbe8b66b74f847ddab46f0f.tar.gz
egit-ed2bf5517b9f40c78fbe8b66b74f847ddab46f0f.tar.xz
egit-ed2bf5517b9f40c78fbe8b66b74f847ddab46f0f.zip
[sync] Add tests for GitChangeSetSorter
This change adds tests for GitChangeSetSorter. It also fixes minor issues in this class that were found during writing tests. GitChangeSetSorterTest is fully independent from Eclipse RCP therefore it can be launched as pure JUnit4 test case. MockRevCommit class is added to be able to set commit time without setting up a full git repository, therefore GitChangeSetSorter.shouldOrderCommitsByCommitDate() will fail with ClassNotFoundException when this tests is launched as a plug-in test. Adds proper configurations for launching JUnit tests from maven build. Change-Id: I6b5ca33c042c935bd299a956858528d0bea2989a Signed-off-by: Dariusz Luksza <dariusz@luksza.org> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.egit.ui.test/src/org')
-rw-r--r--org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/internal/synchronize/mapping/GitChangeSetSorterTest.java391
-rw-r--r--org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/junit/AllJUnitTests.java19
-rw-r--r--org.eclipse.egit.ui.test/src/org/eclipse/jgit/revwalk/MockRevCommit.java27
3 files changed, 437 insertions, 0 deletions
diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/internal/synchronize/mapping/GitChangeSetSorterTest.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/internal/synchronize/mapping/GitChangeSetSorterTest.java
new file mode 100644
index 0000000000..2e86c6716f
--- /dev/null
+++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/internal/synchronize/mapping/GitChangeSetSorterTest.java
@@ -0,0 +1,391 @@
+/*******************************************************************************
+ * Copyright (C) 2011, Dariusz Luksza <dariusz@luksza.org>
+ *
+ * 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
+ *******************************************************************************/
+package org.eclipse.egit.ui.internal.synchronize.mapping;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.eclipse.egit.ui.internal.synchronize.model.GitModelBlob;
+import org.eclipse.egit.ui.internal.synchronize.model.GitModelCache;
+import org.eclipse.egit.ui.internal.synchronize.model.GitModelCommit;
+import org.eclipse.egit.ui.internal.synchronize.model.GitModelTree;
+import org.eclipse.egit.ui.internal.synchronize.model.GitModelWorkingTree;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jgit.revwalk.MockRevCommit;
+import org.eclipse.ui.navigator.CommonViewer;
+import org.junit.Test;
+
+/**
+ * Test for {@link GitChangeSetSorter#compare(Viewer, Object, Object)}.
+ */
+public class GitChangeSetSorterTest {
+
+ /*
+ * Tests for GitModelWorkingTree
+ */
+ @Test public void workingTreeShouldBeLessThanCacheTree() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelCache cache = mock(GitModelCache.class);
+ GitModelWorkingTree workingTree = mock(GitModelWorkingTree.class);
+
+ // when
+ int actual = sorter.compare(viewer, workingTree, cache);
+
+ // then
+ assertTrue(actual < 0);
+ }
+
+ @Test public void workingTreeShouldBeLessThanCommit() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelCommit commit = mock(GitModelCommit.class);
+ GitModelWorkingTree workingTree = mock(GitModelWorkingTree.class);
+
+ // when
+ int actual = sorter.compare(viewer, workingTree, commit);
+
+ // then
+ assertTrue(actual < 0);
+ }
+
+ @Test public void workingTreeShouldBeLessThanTree() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelTree tree = mock(GitModelTree.class);
+ GitModelWorkingTree workingTree = mock(GitModelWorkingTree.class);
+
+ // when
+ int actual = sorter.compare(viewer, workingTree, tree);
+
+ // then
+ assertTrue(actual < 0);
+ }
+
+ @Test public void workingTreeShouldBeLessThanBlob() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelBlob blob = mock(GitModelBlob.class);
+ GitModelWorkingTree workingTree = mock(GitModelWorkingTree.class);
+
+ // when
+ int actual = sorter.compare(viewer, workingTree, blob);
+
+ // then
+ assertTrue(actual < 0);
+ }
+
+ /*
+ * Tests for GitModelCache
+ */
+ @Test public void cacheTreeShouldBeGreaterThanWorkingTree() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelCache cache = mock(GitModelCache.class);
+ GitModelWorkingTree workingTree = mock(GitModelWorkingTree.class);
+
+ // when
+ int actual = sorter.compare(viewer, cache, workingTree);
+
+ // then
+ assertTrue(actual > 0);
+ }
+
+ @Test public void cacheTreeShouldBeLessThanCommit() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelCache cache = mock(GitModelCache.class);
+ GitModelCommit commit = mock(GitModelCommit.class);
+
+ // when
+ int actual = sorter.compare(viewer, cache, commit);
+
+ // then
+ assertTrue(actual < 0);
+ }
+
+ @Test public void cacheTreeShouldBeLessThanTree() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelCache cache = mock(GitModelCache.class);
+ GitModelTree tree = mock(GitModelTree.class);
+
+ // when
+ int actual = sorter.compare(viewer, cache, tree);
+
+ // then
+ assertTrue(actual < 0);
+ }
+
+ @Test public void cacheTreeShouldBeLessThanBlob() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelCache cache = mock(GitModelCache.class);
+ GitModelBlob blob = mock(GitModelBlob.class);
+
+ // when
+ int actual = sorter.compare(viewer, cache, blob);
+
+ // then
+ assertTrue(actual < 0);
+ }
+
+ /*
+ * Tests for GitModelCommit
+ */
+ @Test public void commitTreeShouldBeGreaterThanWorkingTree() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelCommit commit = mock(GitModelCommit.class);
+ GitModelWorkingTree workingTree = mock(GitModelWorkingTree.class);
+
+ // when
+ int actual = sorter.compare(viewer, commit, workingTree);
+
+ // then
+ assertTrue(actual > 0);
+ }
+
+ @Test public void commitTreeShouldBeGreaterThanCache() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelCommit commit = mock(GitModelCommit.class);
+ GitModelCache cache = mock(GitModelCache.class);
+
+ // when
+ int actual = sorter.compare(viewer, commit, cache);
+
+ // then
+ assertTrue(actual > 0);
+ }
+
+ @Test public void commitTreeShouldBeLessThanTree() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelTree tree = mock(GitModelTree.class);
+ GitModelBlob blob = mock(GitModelBlob.class);
+
+ // when
+ int actual = sorter.compare(viewer, tree, blob);
+
+ // then
+ assertTrue(actual < 0);
+ }
+
+ @Test public void commitTreeShouldBeLessThanBlob() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelCommit commit = mock(GitModelCommit.class);
+ GitModelBlob blob = mock(GitModelBlob.class);
+
+ // when
+ int actual = sorter.compare(viewer, commit, blob);
+
+ // then
+ assertTrue(actual < 0);
+ }
+
+ /*
+ * Tests for GitModelTree
+ */
+ @Test public void treeShouldBeGreaterThanWorkingTree() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelTree tree = mock(GitModelTree.class);
+ GitModelWorkingTree workingTree = mock(GitModelWorkingTree.class);
+
+ // when
+ int actual = sorter.compare(viewer, tree, workingTree);
+
+ // then
+ assertTrue(actual > 0);
+ }
+
+ @Test public void treeShouldBeGreaterThanCache() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelTree tree = mock(GitModelTree.class);
+ GitModelCache cache = mock(GitModelCache.class);
+
+ // when
+ int actual = sorter.compare(viewer, tree, cache);
+
+ // then
+ assertTrue(actual > 0);
+ }
+
+ @Test public void treeShouldBeGreaterThanCommit() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelTree tree = mock(GitModelTree.class);
+ GitModelCommit commit = mock(GitModelCommit.class);
+
+ // when
+ int actual = sorter.compare(viewer, tree, commit);
+
+ // then
+ assertTrue(actual > 0);
+ }
+
+ @Test public void treeShouldBeLessThanBlob() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelTree tree = mock(GitModelTree.class);
+ GitModelBlob blob = mock(GitModelBlob.class);
+
+ // when
+ int actual = sorter.compare(viewer, tree, blob);
+
+ // then
+ assertTrue(actual < 0);
+ }
+
+ /*
+ * Tests for GitModelBlob
+ */
+ @Test public void blobShouldBeGreaterThanWorkingTree() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelBlob blob = mock(GitModelBlob.class);
+ GitModelWorkingTree workingTree = mock(GitModelWorkingTree.class);
+
+ // when
+ int actual = sorter.compare(viewer, blob, workingTree);
+
+ // then
+ assertTrue(actual > 0);
+ }
+
+ @Test public void blobShouldBeGreaterThanCache() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelBlob blob = mock(GitModelBlob.class);
+ GitModelCache cache = mock(GitModelCache.class);
+
+ // when
+ int actual = sorter.compare(viewer, blob, cache);
+
+ // then
+ assertTrue(actual > 0);
+ }
+
+ @Test public void blobShouldBeGreaterThanCommit() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelBlob blob = mock(GitModelBlob.class);
+ GitModelCommit commit = mock(GitModelCommit.class);
+
+ // when
+ int actual = sorter.compare(viewer, blob, commit);
+
+ // then
+ assertTrue(actual > 0);
+ }
+
+ @Test public void blobShouldBeGreaterThanTree() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelBlob blob = mock(GitModelBlob.class);
+ GitModelTree tree = mock(GitModelTree.class);
+
+ // when
+ int actual = sorter.compare(viewer, blob, tree);
+
+ // then
+ assertTrue(actual > 0);
+ }
+
+ /*
+ * Tests for alphabetical order
+ */
+ @Test
+ public void shouldOrderTreesAlphabetically() {
+ // given
+ CommonViewer viewer = mock(CommonViewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelTree tree1 = mock(GitModelTree.class);
+ GitModelTree tree2 = mock(GitModelTree.class);
+ ILabelProvider labelProvider = mock(ILabelProvider.class);
+ when(labelProvider.getText(tree1)).thenReturn("aaa");
+ when(labelProvider.getText(tree2)).thenReturn("zzz");
+ when(viewer.getLabelProvider()).thenReturn(labelProvider);
+
+ // when
+ int actual1 = sorter.compare(viewer, tree1, tree2);
+ int actual2 = sorter.compare(viewer, tree2, tree1);
+
+ // then
+ assertTrue(actual1 < 0);
+ assertTrue(actual2 > 0);
+ }
+
+ @Test public void shouldOrderBlobsAlphabetically() {
+ // given
+ CommonViewer viewer = mock(CommonViewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelBlob blob1 = mock(GitModelBlob.class);
+ GitModelBlob blob2 = mock(GitModelBlob.class);
+ ILabelProvider labelProvider = mock(ILabelProvider.class);
+ when(labelProvider.getText(blob1)).thenReturn("aaa");
+ when(labelProvider.getText(blob2)).thenReturn("zzz");
+ when(viewer.getLabelProvider()).thenReturn(labelProvider);
+
+ // when
+ int actual1 = sorter.compare(viewer, blob1, blob2);
+ int actual2 = sorter.compare(viewer, blob2, blob1);
+
+ // then
+ assertTrue(actual1 < 0);
+ assertTrue(actual2 > 0);
+ }
+
+ /*
+ * Test for commit chronological order
+ */
+ @Test public void shouldOrderCommitsByCommitDate() {
+ // given
+ Viewer viewer = mock(Viewer.class);
+ GitChangeSetSorter sorter = new GitChangeSetSorter();
+ GitModelCommit commit1 = mock(GitModelCommit.class);
+ GitModelCommit commit2 = mock(GitModelCommit.class);
+ when(commit1.getBaseCommit()).thenReturn(new MockRevCommit(100));
+ when(commit2.getBaseCommit()).thenReturn(new MockRevCommit(200));
+
+ // when
+ int actual1 = sorter.compare(viewer, commit1, commit2);
+ int actual2 = sorter.compare(viewer, commit2, commit1);
+
+ // then
+ assertTrue(actual1 > 0);
+ assertTrue(actual2 < 0);
+ }
+
+}
diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/junit/AllJUnitTests.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/junit/AllJUnitTests.java
new file mode 100644
index 0000000000..306c6fd7a4
--- /dev/null
+++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/junit/AllJUnitTests.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (C) 2011, Dariusz Luksza <dariusz@luksza.org>
+ *
+ * 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
+ *******************************************************************************/
+package org.eclipse.egit.ui.test.junit;
+
+import org.eclipse.egit.ui.internal.synchronize.mapping.GitChangeSetSorterTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class) @SuiteClasses({ GitChangeSetSorterTest.class })
+public class AllJUnitTests {
+ // Empty class
+}
diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/jgit/revwalk/MockRevCommit.java b/org.eclipse.egit.ui.test/src/org/eclipse/jgit/revwalk/MockRevCommit.java
new file mode 100644
index 0000000000..9ca88faacd
--- /dev/null
+++ b/org.eclipse.egit.ui.test/src/org/eclipse/jgit/revwalk/MockRevCommit.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (C) 2011, Dariusz Luksza <dariusz@luksza.org>
+ *
+ * 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
+ *******************************************************************************/
+package org.eclipse.jgit.revwalk;
+
+import org.eclipse.egit.ui.internal.synchronize.mapping.GitChangeSetSorterTest;
+import org.eclipse.egit.ui.internal.synchronize.model.GitModelCommit;
+
+/**
+ * The only reason of this class existence is to tests {@link GitModelCommit}
+ * ordering in {@link GitChangeSetSorterTest}
+ *
+ * DO NOT USE IT ELSEWERE!
+ */
+public class MockRevCommit extends RevCommit {
+
+ public MockRevCommit(int commitTime) {
+ super(zeroId());
+ this.commitTime = commitTime;
+ }
+
+}

Back to the top