001package com.teamscale.commons.commit;
002
003import static java.util.Arrays.asList;
004
005import java.util.ArrayList;
006import java.util.List;
007
008import org.conqat.engine.index.shared.CommitDescriptor;
009import org.conqat.engine.index.shared.ParentedCommitDescriptor;
010
011/**
012 * Class providing static imports of methods to create commit descriptors with
013 * shorthand methods. Should be used to increase readability of tests.
014 */
015public class CommitDescriptorTestUtils {
016
017        /** The name of the master branch. */
018        public static final String MASTER_BRANCH_NAME = "master";
019
020        /** The default name for commits on a branch. */
021        public static final String OTHER_BRANCH_NAME = "branch";
022
023        private static final String TRUNK_BRANCH_NAME = "trunk";
024
025        /**
026         * Creates a {@link CommitDescriptor} with branch name {@code master} and given
027         * timestamp.
028         */
029        public static CommitDescriptor masterCommit(long timestamp) {
030                return new CommitDescriptor(MASTER_BRANCH_NAME, timestamp);
031        }
032
033        /**
034         * Creates a {@link CommitDescriptor} with branch name {@code branch} and given
035         * timestamp.
036         */
037        public static CommitDescriptor branchCommit(long timestamp) {
038                return new CommitDescriptor(OTHER_BRANCH_NAME, timestamp);
039        }
040
041        /**
042         * Creates a {@link CommitDescriptor} for given timestamp with branch as
043         * {@link #TRUNK_BRANCH_NAME}
044         */
045        public static CommitDescriptor trunkCommit(long timestamp) {
046                return new CommitDescriptor(TRUNK_BRANCH_NAME, timestamp);
047        }
048
049        /** Creates a merge {@link ParentedCommitDescriptor} with given parents. */
050        public static ParentedCommitDescriptor mergeCommit(CommitDescriptor mergeCommit, CommitDescriptor firstParent,
051                        CommitDescriptor mergedParent, CommitDescriptor... additionalMergedParents) {
052                List<CommitDescriptor> parentCommits = new ArrayList<>();
053                parentCommits.add(firstParent);
054                parentCommits.add(mergedParent);
055                parentCommits.addAll(asList(additionalMergedParents));
056                return new ParentedCommitDescriptor(mergeCommit, parentCommits);
057        }
058}