| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597 |
- using System.Collections.Generic;
- using NUnit.Framework;
- using Codice.Client.Commands;
- using Codice.Client.Commands.Mount;
- using Codice.CM.Common;
- using Codice.CM.Common.Merge;
- using Codice.Utils;
- using PlasticGui.WorkspaceWindow.Diff;
- using Unity.PlasticSCM.Editor.Views.Diff;
- namespace Unity.PlasticSCM.Tests.Editor.Views.Diff
- {
- [TestFixture]
- class UnityDiffTreeTests
- {
- [Test]
- public void TestAddedNoMeta()
- {
- ClientDiff added = Build.Added("/foo/bar.c");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(added);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- added,
- ChangeCategoryType.Added,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Added not found");
- Assert.IsFalse(
- diffTree.HasMeta(clientDiffInfo),
- "Meta exists");
- }
- [Test]
- public void TestChangedNoMeta()
- {
- ClientDiff changed = Build.Changed("/foo/bar.c");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(changed);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- changed,
- ChangeCategoryType.Changed,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Changed not found");
- Assert.IsFalse(
- diffTree.HasMeta(clientDiffInfo),
- "Meta exists");
- }
- [Test]
- public void TestDeletedNoMeta()
- {
- ClientDiff deleted = Build.Deleted("/foo/bar.c");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(deleted);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- deleted,
- ChangeCategoryType.Deleted,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Deleted not found");
- Assert.IsFalse(
- diffTree.HasMeta(clientDiffInfo),
- "Meta exists");
- }
- [Test]
- public void TestMovedNoMeta()
- {
- ClientDiff moved = Build.Moved("/foo/bar.src.c", "/foo/bar.c");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(moved);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- moved,
- ChangeCategoryType.Moved,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Moved not found");
- Assert.IsFalse(
- diffTree.HasMeta(clientDiffInfo),
- "Meta exists");
- }
- [Test]
- public void TestFsPermissionsNoMeta()
- {
- ClientDiff changedFsPermissions = Build.ChangedFsPermissions("/foo/bar.c");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(changedFsPermissions);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- changedFsPermissions,
- ChangeCategoryType.FSProtection,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Changed fs protection not found");
- Assert.IsFalse(
- diffTree.HasMeta(clientDiffInfo),
- "Meta exists");
- }
- [Test]
- public void TestMergedNoMeta()
- {
- ClientDiff merged = Build.Merged("/foo/bar.c");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(merged);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- merged,
- ChangeCategoryType.Merged,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Merged not found");
- Assert.IsFalse(
- diffTree.HasMeta(clientDiffInfo),
- "Meta exists");
- }
- [Test]
- public void TestAddedWithMeta()
- {
- ClientDiff added = Build.Added("/foo/bar.c");
- ClientDiff addedMeta = Build.Added("/foo/bar.c.meta");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(added);
- diffs.Add(addedMeta);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- added,
- ChangeCategoryType.Added,
- diffTree);
- ClientDiffInfo clientDiffInfoMeta = FindClientDiffInfo.FromClientDiff(
- addedMeta,
- ChangeCategoryType.Added,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Added not found");
- Assert.IsNull(
- clientDiffInfoMeta,
- "Added meta found");
- Assert.IsTrue(
- diffTree.HasMeta(clientDiffInfo),
- "Meta does not exist");
- }
- [Test]
- public void TestChangedWithMeta()
- {
- ClientDiff changed = Build.Changed("/foo/bar.c");
- ClientDiff changedMeta = Build.Changed("/foo/bar.c.meta");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(changed);
- diffs.Add(changedMeta);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- changed,
- ChangeCategoryType.Changed,
- diffTree);
- ClientDiffInfo clientDiffInfoMeta = FindClientDiffInfo.FromClientDiff(
- changedMeta,
- ChangeCategoryType.Changed,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Changed not found");
- Assert.IsNull(
- clientDiffInfoMeta,
- "Changed meta found");
- Assert.IsTrue(
- diffTree.HasMeta(clientDiffInfo),
- "Meta does not exist");
- }
- [Test]
- public void TestDeletedWithMeta()
- {
- ClientDiff deleted = Build.Deleted("/foo/bar.c");
- ClientDiff deletedMeta = Build.Deleted("/foo/bar.c.meta");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(deleted);
- diffs.Add(deletedMeta);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- deleted,
- ChangeCategoryType.Deleted,
- diffTree);
- ClientDiffInfo clientDiffInfoMeta = FindClientDiffInfo.FromClientDiff(
- deletedMeta,
- ChangeCategoryType.Deleted,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Deleted not found");
- Assert.IsNull(
- clientDiffInfoMeta,
- "Deleted meta found");
- Assert.IsTrue(
- diffTree.HasMeta(clientDiffInfo),
- "Meta does not exist");
- }
- [Test]
- public void TestMovedWithMeta()
- {
- ClientDiff moved = Build.Moved("/foo/bar.src.c", "/foo/bar.c");
- ClientDiff movedMeta = Build.Moved("/foo/bar.src.c.meta", "/foo/bar.c.meta");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(moved);
- diffs.Add(movedMeta);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- moved,
- ChangeCategoryType.Moved,
- diffTree);
- ClientDiffInfo clientDiffInfoMeta = FindClientDiffInfo.FromClientDiff(
- movedMeta,
- ChangeCategoryType.Moved,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Moved not found");
- Assert.IsNull(
- clientDiffInfoMeta,
- "Moved meta found");
- Assert.IsTrue(
- diffTree.HasMeta(clientDiffInfo),
- "Meta does not exist");
- }
- [Test]
- public void TestFsPermissionsWithMeta()
- {
- ClientDiff fsPermissionsChange = Build.ChangedFsPermissions("/foo/bar.c");
- ClientDiff fsPermissionsChangeMeta = Build.ChangedFsPermissions("/foo/bar.c.meta");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(fsPermissionsChange);
- diffs.Add(fsPermissionsChangeMeta);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- fsPermissionsChange,
- ChangeCategoryType.FSProtection,
- diffTree);
- ClientDiffInfo clientDiffInfoMeta = FindClientDiffInfo.FromClientDiff(
- fsPermissionsChangeMeta,
- ChangeCategoryType.FSProtection,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Change fs permissions not found");
- Assert.IsNull(
- clientDiffInfoMeta,
- "Change fs permissions meta found");
- Assert.IsTrue(
- diffTree.HasMeta(clientDiffInfo),
- "Meta does not exist");
- }
- [Test]
- public void TestMergedWithMeta()
- {
- ClientDiff merged = Build.Merged("/foo/bar.c");
- ClientDiff mergedMeta = Build.Merged("/foo/bar.c.meta");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(merged);
- diffs.Add(mergedMeta);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- merged,
- ChangeCategoryType.Merged,
- diffTree);
- ClientDiffInfo clientDiffInfoMeta = FindClientDiffInfo.FromClientDiff(
- mergedMeta,
- ChangeCategoryType.Merged,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Merged not found");
- Assert.IsNull(
- clientDiffInfoMeta,
- "Merged meta found");
- Assert.IsTrue(
- diffTree.HasMeta(clientDiffInfo),
- "Meta does not exist");
- }
- [Test]
- public void TestChangeWithDeletedMeta()
- {
- ClientDiff changed = Build.Changed("/foo/bar.c");
- ClientDiff deletedMeta = Build.Deleted("/foo/bar.c.meta");
- List<ClientDiff> diffs = new List<ClientDiff>();
- diffs.Add(changed);
- diffs.Add(deletedMeta);
- UnityDiffTree diffTree = new UnityDiffTree();
- diffTree.BuildCategories(diffs, false);
- ClientDiffInfo clientDiffInfo = FindClientDiffInfo.FromClientDiff(
- changed,
- ChangeCategoryType.Changed,
- diffTree);
- ClientDiffInfo clientDiffInfoMeta = FindClientDiffInfo.FromClientDiff(
- deletedMeta,
- ChangeCategoryType.Deleted,
- diffTree);
- Assert.IsNotNull(
- clientDiffInfo,
- "Changed not found");
- Assert.IsNotNull(
- clientDiffInfoMeta,
- "Deleted meta not found");
- Assert.IsFalse(
- diffTree.HasMeta(clientDiffInfo),
- "Meta exists");
- }
- static class Build
- {
- internal static ClientDiff Added(string path)
- {
- return new ClientDiff(
- BuildRootMountPoint(),
- BuildAddedDifference(path),
- null);
- }
- internal static ClientDiff Changed(string path)
- {
- return new ClientDiff(
- BuildRootMountPoint(),
- BuildChangedDifference(path),
- null);
- }
- internal static ClientDiff ChangedFsPermissions(string path)
- {
- return new ClientDiff(
- BuildRootMountPoint(),
- BuildChangedFsPermissionsDifference(path),
- null);
- }
- internal static ClientDiff Deleted(string path)
- {
- return new ClientDiff(
- BuildRootMountPoint(),
- BuildDeletedDifference(path),
- null);
- }
- internal static ClientDiff Merged(string path)
- {
- return new ClientDiff(
- BuildRootMountPoint(),
- BuildChangedDifference(path),
- new ItemDiffMerge(new List<RevisionMerge>()
- {
- new RevisionMerge()
- {
- SrcRevId = 15,
- DstRevId = 16,
- Link = new MergeLinkRealizationInfo(),
- Type = MergeChangeType.Merged
- }
- }));
- }
- internal static ClientDiff Moved(
- string srcPath,
- string dstPath)
- {
- return new ClientDiff(
- BuildRootMountPoint(),
- BuildMovedDifference(srcPath, dstPath),
- null);
- }
- static Difference BuildAddedDifference(string path)
- {
- return new DiffChanged(
- new RevisionInfo() { Type = EnumRevisionType.enTextFile },
- -1,
- path,
- -1,
- Difference.DiffNodeStatus.Added);
- }
- static Difference BuildChangedDifference(string path)
- {
- return new DiffChanged(
- new RevisionInfo() { Type = EnumRevisionType.enTextFile },
- -1,
- path,
- -1,
- Difference.DiffNodeStatus.Changed);
- }
- static Difference BuildChangedFsPermissionsDifference(string path)
- {
- return new DiffChanged(
- new RevisionInfo() { Type = EnumRevisionType.enTextFile },
- -1,
- path,
- -1,
- Difference.DiffNodeStatus.Changed,
- null,
- 456);
- }
- static Difference BuildDeletedDifference(string path)
- {
- return new DiffChanged(
- new RevisionInfo() { Type = EnumRevisionType.enTextFile },
- -1,
- path,
- -1,
- Difference.DiffNodeStatus.Deleted);
- }
- static Difference BuildMovedDifference(string srcPath, string dstPath)
- {
- return new DiffMoved(
- new RevisionInfo() { Type = EnumRevisionType.enTextFile },
- -1,
- srcPath,
- -1,
- dstPath,
- -1);
- }
- static MountPointWithPath BuildRootMountPoint()
- {
- return new MountPointWithPath(
- MountPointId.WORKSPACE_ROOT,
- new RepositorySpec()
- {
- Name = "myrep",
- Server = "myserver:8084"
- },
- "/myroot");
- }
- }
- static class FindClientDiffInfo
- {
- internal static ClientDiffInfo FromClientDiff(
- ClientDiff clientDiff,
- ChangeCategoryType type,
- UnityDiffTree diffTree)
- {
- foreach (ITreeViewNode node in diffTree.GetNodes())
- {
- ClientDiffInfo result = FindClientDiffOfType(
- clientDiff.Diff.Path,
- type,
- node);
- if (result != null)
- return result;
- }
- return null;
- }
- static ClientDiffInfo FindClientDiffOfType(
- string path,
- ChangeCategoryType type,
- ITreeViewNode node)
- {
- if (node is ClientDiffInfo)
- {
- ClientDiffInfo clientDiffInfo = (ClientDiffInfo)node;
- ChangeCategory category = (ChangeCategory)node.GetParent();
- if (category.Type == type &&
- clientDiffInfo.DiffWithMount.Difference.Path == path)
- {
- return (ClientDiffInfo)node;
- }
- }
- for (int i = 0; i < node.GetChildrenCount(); i++)
- {
- ClientDiffInfo result = FindClientDiffOfType(path, type, node.GetChild(i));
- if (result != null)
- return result;
- }
- return null;
- }
- }
- }
- }
|