public void TestOnlyMeta()
        {
            UnityPendingChangesTree tree = new UnityPendingChangesTree();

            WorkspaceInfo wkInfo = new WorkspaceInfo("foo", "/foo");

            PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges pendingChanges =
                new PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges(wkInfo);

            ChangeInfo addedMeta = new ChangeInfo()
            {
                Path = "/foo/foo.c.meta",
            };

            pendingChanges.Added.Add(addedMeta);

            tree.BuildChangeCategories(
                wkInfo.ClientPath,
                pendingChanges,
                new PlasticGui.WorkspaceWindow.PendingChanges.CheckedStateManager());

            Assert.IsNull(
                tree.GetMetaChange(addedMeta),
                "Meta change should be null");
        }
        public void TestMovedNoMeta()
        {
            UnityPendingChangesTree tree = new UnityPendingChangesTree();

            WorkspaceInfo wkInfo = new WorkspaceInfo("foo", "/foo");

            PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges pendingChanges =
                new PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges(wkInfo);

            ChangeInfo moved = new ChangeInfo()
            {
                OldPath = "/foo/foo.c",
                Path    = "/foo/bar/newfoo.c",
            };

            pendingChanges.Moved.Add(moved);

            tree.BuildChangeCategories(
                wkInfo.ClientPath,
                pendingChanges,
                new PlasticGui.WorkspaceWindow.PendingChanges.CheckedStateManager());

            Assert.IsNull(
                tree.GetMetaChange(moved),
                "Meta change should be null");
        }
        public void TestCheckedChangesWithMeta()
        {
            UnityPendingChangesTree tree = new UnityPendingChangesTree();

            WorkspaceInfo wkInfo = new WorkspaceInfo("foo", "/foo");

            PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges pendingChanges =
                new PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges(wkInfo);

            ChangeInfo added = new ChangeInfo()
            {
                Path = "/foo/foo.c",
            };

            ChangeInfo addedMeta = new ChangeInfo()
            {
                Path = "/foo/foo.c",
            };

            pendingChanges.Added.Add(added);
            pendingChanges.Added.Add(addedMeta);

            PlasticGui.WorkspaceWindow.PendingChanges.CheckedStateManager checkedStateManager =
                new PlasticGui.WorkspaceWindow.PendingChanges.CheckedStateManager();

            tree.BuildChangeCategories(
                wkInfo.ClientPath,
                pendingChanges,
                checkedStateManager);

            checkedStateManager.Update(added, true);

            List <ChangeInfo> changes;
            List <ChangeInfo> dependenciesCandidates;

            tree.GetCheckedChanges(
                false,
                out changes,
                out dependenciesCandidates);

            Assert.IsTrue(changes.Contains(added),
                          "Changes should contains the change");

            Assert.IsTrue(changes.Contains(addedMeta),
                          "Changes should contains the meta change");
        }
        public void TestMovedWithMeta()
        {
            UnityPendingChangesTree tree = new UnityPendingChangesTree();

            WorkspaceInfo wkInfo = new WorkspaceInfo("foo", "/foo");

            PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges pendingChanges =
                new PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges(wkInfo);

            ChangeInfo moved = new ChangeInfo()
            {
                OldPath = "/foo/foo.c",
                Path    = "/foo/bar/newfoo.c",
            };

            ChangeInfo movedMeta = new ChangeInfo()
            {
                OldPath = "/foo/foo.c.meta",
                Path    = "/foo/bar/newfoo.c.meta",
            };

            pendingChanges.Moved.Add(moved);
            pendingChanges.Moved.Add(movedMeta);

            tree.BuildChangeCategories(
                wkInfo.ClientPath,
                pendingChanges,
                new PlasticGui.WorkspaceWindow.PendingChanges.CheckedStateManager());

            Assert.IsTrue(
                pendingChanges.Moved.Contains(moved),
                "Pending changes should contain the change");

            Assert.IsFalse(
                pendingChanges.Moved.Contains(movedMeta),
                "Pending changes should not contain the meta");

            Assert.AreEqual(movedMeta, tree.GetMetaChange(moved));
        }
        public void TestFileAddedMetaPrivate()
        {
            UnityPendingChangesTree tree = new UnityPendingChangesTree();

            WorkspaceInfo wkInfo = new WorkspaceInfo("foo", "/foo");

            PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges pendingChanges =
                new PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges(wkInfo);

            ChangeInfo added = new ChangeInfo()
            {
                Path        = "/foo/foo.c",
                ChangeTypes = ChangeTypes.Added,
            };

            ChangeInfo privateMeta = new ChangeInfo()
            {
                Path        = "/foo/foo.c.meta",
                ChangeTypes = ChangeTypes.Private,
            };

            pendingChanges.Added.Add(added);
            pendingChanges.Added.Add(privateMeta);

            tree.BuildChangeCategories(
                wkInfo.ClientPath,
                pendingChanges,
                new PlasticGui.WorkspaceWindow.PendingChanges.CheckedStateManager());

            Assert.IsTrue(
                pendingChanges.Added.Contains(added),
                "Pending changes should contain the change");

            Assert.IsTrue(
                pendingChanges.Added.Contains(privateMeta),
                "Pending changes should contain the meta");
        }