예제 #1
0
        private void MergePathToVFSTree(string fullPath)
        {
            var folders = fullPath.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);

            if (folders.Length == 0)
            {
                return;
            }

            int index = 1;

            for (VFSTree <string> nested = VFSTree; index < folders.Length; index++)
            {
                var getValuePath = folders[index];
                if (AddFile(getValuePath, nested))
                {
                    return;
                }

                var foundNode = nested.FindNode(getValuePath);
                if (foundNode == null)
                {
                    foundNode = nested.AddChild(getValuePath);
                }
                nested = foundNode;
            }
        }
예제 #2
0
        private bool AddFile(string file, VFSTree <string> node)
        {
            var foundFile = CheckIfFile(file);

            if (foundFile)
            {
                node.AddFile(file);
                return(true);
            }
            return(false);
        }
예제 #3
0
        public void VFSTreeFind_NoChildFound()
        {
            var root = new VFSTree <string>("root");

            root.AddChild("child000");
            root.AddChild("child001");
            root.AddChild("child002");

            var childNode = root.FindNode("123");

            Assert.IsNull(childNode);
        }
예제 #4
0
        public void VFSTreeFind_FoundChild()
        {
            var root = new VFSTree <string>("root");

            root.AddChild("child000");
            root.AddChild("child001");
            root.AddChild("child002");

            var childNode = root.FindNode("child001");

            childNode.AddChild("child011");
            childNode.AddChild("child021");

            Assert.AreEqual("child001", childNode.Data);
        }
예제 #5
0
        public void VFSTreeFind_DeeperChildFound()
        {
            var root = new VFSTree <string>("root");

            root.AddChild("child000");
            root.AddChild("child001");
            root.AddChild("child002");

            var childNode1 = root.FindNode("child001");

            childNode1.AddChild("child011");
            childNode1.AddChild("child021");
            var childNode21 = root.FindNode("child001").FindNode("child021");

            childNode21.AddChild("child121");
            childNode21.AddChild("child221");

            Assert.AreEqual("child021", childNode21.Data);
        }
예제 #6
0
 public MergeVFSTree(VFSTree <string> root)
 {
     VFSTree = root;
 }
예제 #7
0
 public static VFSTree <T> AddFile <T>(this VFSTree <T> @this, string file)
 {
     @this.AddFile(file);
     return(@this);
 }