summaryrefslogtreecommitdiff
path: root/plugins/git4idea/tests/git4idea/log/GitLogRefSorterTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/git4idea/tests/git4idea/log/GitLogRefSorterTest.java')
-rw-r--r--plugins/git4idea/tests/git4idea/log/GitLogRefSorterTest.java311
1 files changed, 0 insertions, 311 deletions
diff --git a/plugins/git4idea/tests/git4idea/log/GitLogRefSorterTest.java b/plugins/git4idea/tests/git4idea/log/GitLogRefSorterTest.java
deleted file mode 100644
index 7346852bab68..000000000000
--- a/plugins/git4idea/tests/git4idea/log/GitLogRefSorterTest.java
+++ /dev/null
@@ -1,311 +0,0 @@
-package git4idea.log;
-
-import com.intellij.mock.MockVirtualFile;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Condition;
-import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.testFramework.UsefulTestCase;
-import com.intellij.util.Function;
-import com.intellij.util.containers.ContainerUtil;
-import com.intellij.vcs.log.VcsRef;
-import com.intellij.vcs.log.VcsRefType;
-import com.intellij.vcs.log.impl.HashImpl;
-import com.intellij.vcs.log.impl.VcsRefImpl;
-import git4idea.GitLocalBranch;
-import git4idea.GitRemoteBranch;
-import git4idea.branch.GitBranchesCollection;
-import git4idea.repo.*;
-import git4idea.test.GitTestRepositoryManager;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.*;
-
-/**
- * @author Kirill Likhodedov
- */
-public class GitLogRefSorterTest extends UsefulTestCase {
-
- public static final MockVirtualFile MOCK_VIRTUAL_FILE = new MockVirtualFile("mockFile");
-
- public void testEmpty() {
- check(Collections.<VcsRef>emptyList(), Collections.<VcsRef>emptyList());
- }
-
- public void testSingle() {
- check(given("HEAD"),
- expect("HEAD"));
- }
-
- public void testHeadIsMoreImportantThanBranch() {
- check(given("master", "HEAD"),
- expect("HEAD", "master"));
- }
-
- public void testLocalBranchesAreComparedAsStrings() {
- check(given("release", "feature"),
- expect("feature", "release"));
- }
-
- public void testTagIsTheLessImportant() {
- check(given("tag/v1", "origin/master"),
- expect("origin/master", "tag/v1"));
- }
-
- public void testMasterIsMoreImportant() {
- check(given("feature", "master"),
- expect("master", "feature"));
- }
-
- public void testOriginMasterIsMoreImportant() {
- check(given("origin/master", "origin/aaa"),
- expect("origin/master", "origin/aaa"));
- }
-
- public void testRemoteBranchHavingTrackingBranchIsMoreImportant() {
- check(given("feature", "origin/aaa", "origin/feature"),
- expect("feature", "origin/feature", "origin/aaa"));
- }
-
- public void testSeveral1() {
- check(given("tag/v1", "feature", "HEAD", "master"),
- expect("HEAD", "master", "feature", "tag/v1"));
- }
-
- public void testSeveral2() {
- check(given("origin/master", "origin/great_feature", "tag/v1", "release", "HEAD", "master"),
- expect("HEAD", "master", "release", "origin/master", "origin/great_feature", "tag/v1"));
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- }
-
- private static Collection<VcsRef> given(String... refs) {
- return convertToRefs(refs);
- }
-
- private static List<VcsRef> expect(String... refs) {
- return new ArrayList<VcsRef>(convertToRefs(refs));
- }
-
- private static List<VcsRef> convertToRefs(String[] refs) {
- return ContainerUtil.map(refs, new Function<String, VcsRef>() {
- @Override
- public VcsRef fun(String name) {
- return ref(name);
- }
- });
- }
-
- private static VcsRef ref(String name) {
- String randomHash = randomHash();
- if (isHead(name)) {
- return ref(randomHash, name, GitRefManager.HEAD);
- }
- if (isRemoteBranch(name)) {
- return ref(randomHash, name, GitRefManager.REMOTE_BRANCH);
- }
- if (isTag(name)) {
- return ref(randomHash, name, GitRefManager.TAG);
- }
- return ref(randomHash, name, GitRefManager.LOCAL_BRANCH);
- }
-
- private static String randomHash() {
- return String.valueOf(new Random().nextInt());
- }
-
- private static boolean isHead(String name) {
- return name.equals("HEAD");
- }
-
- private static boolean isTag(String name) {
- return name.startsWith("tag/");
- }
-
- private static boolean isRemoteBranch(String name) {
- return name.startsWith("origin/");
- }
-
- private static boolean isLocalBranch(String name) {
- return !isHead(name) && !isTag(name) && !isRemoteBranch(name);
- }
-
- private static VcsRef ref(String hash, String name, VcsRefType type) {
- return new VcsRefImpl(HashImpl.build(hash), name, type, MOCK_VIRTUAL_FILE);
- }
-
- private static void check(Collection<VcsRef> unsorted, List<VcsRef> expected) {
- // for the sake of simplicity we check only names of references
- List<VcsRef> actual = sort(unsorted);
- assertEquals("Collections size don't match", expected.size(), actual.size());
- for (int i = 0; i < actual.size(); i++) {
- assertEquals("Incorrect element at place " + i, expected.get(i).getName(), actual.get(i).getName());
- }
- }
-
- private static List<VcsRef> sort(final Collection<VcsRef> refs) {
- final GitTestRepositoryManager manager = new GitTestRepositoryManager();
- manager.add(new MockGitRepository() {
- @NotNull
- @Override
- public Collection<GitBranchTrackInfo> getBranchTrackInfos() {
- List<GitBranchTrackInfo> infos = new ArrayList<GitBranchTrackInfo>();
- List<VcsRef> remoteRefs = ContainerUtil.findAll(refs, new Condition<VcsRef>() {
- @Override
- public boolean value(VcsRef ref) {
- return isRemoteBranch(ref.getName());
- }
- });
- List<VcsRef> localRefs = ContainerUtil.findAll(refs, new Condition<VcsRef>() {
- @Override
- public boolean value(VcsRef ref) {
- return isLocalBranch(ref.getName());
- }
- });
-
- for (final VcsRef localRef : localRefs) {
- final VcsRef trackedRef = ContainerUtil.find(remoteRefs, new Condition<VcsRef>() {
- @Override
- public boolean value(VcsRef remoteRef) {
- return localRef.getName().equals(remoteRef.getName().substring("origin/".length()));
- }
- });
- if (trackedRef != null) {
- infos.add(new GitBranchTrackInfo(new GitLocalBranch(localRef.getName(), HashImpl.build(randomHash())),
- new GitRemoteBranch(trackedRef.getName(), HashImpl.build(randomHash())) {
- @NotNull
- @Override
- public String getNameForRemoteOperations() {
- return trackedRef.getName().substring("origin/".length());
- }
-
- @NotNull
- @Override
- public String getNameForLocalOperations() {
- return trackedRef.getName();
- }
-
- @NotNull
- @Override
- public GitRemote getRemote() {
- return GitRemote.DOT;
- }
-
- @Override
- public boolean isRemote() {
- return true;
- }
- }, true));
- }
- }
- return infos;
- }
- });
- return new GitRefManager(manager).sort(refs);
- }
-
- // TODO either use the real GitRepository, or move upwards and make more generic implementation
- private static class MockGitRepository implements GitRepository {
- @NotNull
- @Override
- public VirtualFile getGitDir() {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public GitUntrackedFilesHolder getUntrackedFilesHolder() {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public GitRepoInfo getInfo() {
- throw new UnsupportedOperationException();
- }
-
- @Nullable
- @Override
- public GitLocalBranch getCurrentBranch() {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public GitBranchesCollection getBranches() {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public Collection<GitRemote> getRemotes() {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public Collection<GitBranchTrackInfo> getBranchTrackInfos() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public boolean isRebaseInProgress() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public boolean isOnBranch() {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public VirtualFile getRoot() {
- return MOCK_VIRTUAL_FILE;
- }
-
- @NotNull
- @Override
- public String getPresentableUrl() {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public Project getProject() {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public State getState() {
- throw new UnsupportedOperationException();
- }
-
- @Nullable
- @Override
- public String getCurrentRevision() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public boolean isFresh() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void update() {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public String toLogString() {
- throw new UnsupportedOperationException();
- }
- }
-}