public void ConstructFromRelativePathTest()
 {
     BasePath path = new BasePath("C:/code/");
     RelativePath relPath = new RelativePath("test/", path);
     Assert.AreEqual("test/", relPath.RelativePathComponent, "Relative path from constructor.");
     Assert.AreEqual(path, relPath.RelativeTo, "Relative to from constructor.");
 }
 public void ChainedPathTest()
 {
     BasePath path = new BasePath("C:/code/");
     RelativePath relPath = new RelativePath("test/", path);
     RelativePath relPath2 = new RelativePath("file.txt", relPath);
     Assert.AreEqual("C:/code/test/file.txt", relPath2.AbsolutePath, "Chained relative path.");
 }
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            if (context == null || context.Instance == null || !(context.Instance is InstallerAction))
            return value;

            InstallerAction action = (InstallerAction)context.Instance;
            ScriptPackage package = action.Configuration.Package;
            ScriptManifest manifest = package.Manifest;

            if (this.openFileDialog == null)
            {
            this.InitializeDialog();
            }

            if (value is String)
            {
            if (action.Configuration != null && action.Configuration.Package != null)
            {
                RelativePath path = new RelativePath((string)value, package.SourcePath);
                String pathStr = ScriptManifestTokens.Replace(path.AbsolutePath, manifest, manifest.LatestVersion);
                if (path.IsFilePath)
                {
                    this.openFileDialog.FileName = pathStr.Replace('/', '\\');
                }
                else
                {
                    this.openFileDialog.FileName = "";
                    this.openFileDialog.InitialDirectory = pathStr.Replace('/', '\\');
                }
            }
            else
                this.openFileDialog.FileName = (string)value;
            }

            if (this.openFileDialog.ShowDialog() == DialogResult.OK)
            {
            if (action.Configuration != null && action.Configuration.Package != null)
            {
                BasePath sourcePath = new BasePath(ScriptManifestTokens.Replace(package.SourcePath.AbsolutePath, manifest, manifest.LatestVersion));
                RelativePath relPath = new RelativePath(this.openFileDialog.FileName, sourcePath);
                value = relPath.RelativePathComponent;
            }
            else
                value = (new System.IO.FileInfo(this.openFileDialog.FileName)).Name;
            }

            return value;
        }
        public void ConstructorIncorrectInputTest()
        {
            BasePath path = new BasePath("C:/code/");

            try
            {
                RelativePath relPath = new RelativePath(null, path);
                Assert.Fail("Passing null path to constructor should throw exception");
            }
            catch (ArgumentNullException e)
            {
                Assert.IsNotNull(e);
            }

            try
            {
                RelativePath relPath = new RelativePath("test/", null);
                Assert.Fail("Passing null relativeTo to constructor should throw exception");
            }
            catch (ArgumentNullException e)
            {
                Assert.IsNotNull(e);
            }

            BasePath filePath = new BasePath("C:/code/test.txt");
            Assert.IsTrue(filePath.IsFilePath);
            try
            {
                RelativePath relPath = new RelativePath("../folder/", filePath);
                Assert.Fail("Creating a path relative to a file should throw exception");
            }
            catch (ArgumentException e)
            {
                Assert.IsNotNull(e);
            }
        }
 public override void PackResources(Ionic.Zip.ZipFile zip, String archiveTargetPath, IPath sourcePath)
 {
     RelativePath path = new RelativePath(this.Source, sourcePath);
     zip.AddFile(path.AbsolutePath, archiveTargetPath);
 }
        public override void PackResources(Ionic.Zip.ZipFile zip, String archiveTargetPath, IPath sourcePath)
        {
            //Create selection criteria string from ExcludeFiles property.
            StringBuilder selectionCriteria = new StringBuilder();
            String[] splitExcludeFiles = this.ExcludeFiles.Replace(" ", "").Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (String exludeFile in splitExcludeFiles)
            {
            if (selectionCriteria.Length > 0)
                selectionCriteria.Append(" AND ");
            selectionCriteria.Append("name != '");
            selectionCriteria.Append(exludeFile);
            selectionCriteria.Append("'");
            }

            //Create source path and archive path.
            RelativePath path = new RelativePath(this.Source, sourcePath);
            if (!archiveTargetPath.EndsWith("\\"))
            archiveTargetPath += "\\";
            archiveTargetPath += path.PathComponents[path.PathComponents.Count - 1];

            //Add files to zip.
            zip.AddSelectedFiles(selectionCriteria.ToString(), path.AbsolutePath.Replace('/', '\\'), archiveTargetPath, true);
        }
        public void GetAbsolutePathTest()
        {
            BasePath path = new BasePath("C:/code/");
            RelativePath relPath = new RelativePath("test/", path);
            Assert.AreEqual("C:/code/test/", relPath.AbsolutePath, "Absolute path.");

            relPath = new RelativePath("../test/", path);
            Assert.AreEqual("C:/test/", relPath.AbsolutePath, "Absolute path 2.");
        }
 public void ConstructFromAbsolutePathTest()
 {
     BasePath path = new BasePath("C:/code/");
     RelativePath relPath = new RelativePath("C:/code/test/", path);
     Assert.AreEqual("test/", relPath.RelativePathComponent, "Relative path from constructor when supplying absolute path.");
 }
 public void CombineTest()
 {
     RelativePath path = new RelativePath("code/", new BasePath("C:/"));
     IPath newPath = path.Combine("../test/");
     Assert.AreEqual("C:/test/", newPath.AbsolutePath, "New path should include concatenated directory");
 }
        public void SetRelativeToTest()
        {
            BasePath path = new BasePath("C:/code/");
            BasePath path2 = new BasePath("C:/path/");
            RelativePath relPath = new RelativePath("test/", path);
            Assert.AreEqual("C:/code/test/", relPath.AbsolutePath, "Initial path.");

            relPath.RelativeTo = path2;
            Assert.AreEqual("C:/path/test/", relPath.AbsolutePath, "Absolute path after changing RelativeTo.");

            try
            {
                relPath.RelativeTo = null;
                Assert.Fail("Setting RelativeTo to null should throw ArgumentNullException.");
            }
            catch (ArgumentNullException e)
            {
                Assert.IsNotNull(e);
            }
        }
        public void SetRelativeComponentTest()
        {
            BasePath path = new BasePath("C:/code/");
            RelativePath relPath = new RelativePath("test/", path);
            Assert.AreEqual("C:/code/test/", relPath.AbsolutePath, "Initial path.");

            relPath.RelativePathComponent = "newPath/test/";
            Assert.AreEqual("newPath/test/", relPath.RelativePathComponent, "Changed RelativePathComponent.");
            Assert.AreEqual("C:/code/newPath/test/", relPath.AbsolutePath, "Absolute path after changing RelativePathComponent.");

            try
            {
                relPath.RelativePathComponent = null;
                Assert.Fail("Setting RelativePathComponent to null should throw ArgumentNullException.");
            }
            catch (ArgumentNullException e)
            {
                Assert.IsNotNull(e);
            }
        }
        public void SetAbsolutePathTest()
        {
            BasePath path = new BasePath("C:/code/");
            RelativePath relPath = new RelativePath("test/", path);
            Assert.AreEqual("C:/code/test/", relPath.AbsolutePath, "Initial path.");

            relPath.AbsolutePath = "C:/test/newPath/";
            Assert.AreEqual("C:/test/newPath/", relPath.AbsolutePath, "Changed path.");
            Assert.AreEqual("../test/newPath/", relPath.RelativePathComponent, "Changed relativePathComponent.");
        }
 public void PathComponentsTest()
 {
     BasePath root = new BasePath("C:/code/");
     RelativePath path = new RelativePath("test/", root);
     Assert.AreEqual(3, path.PathComponents.Count, "PathComponents count.");
     Assert.AreEqual("C:", path.PathComponents[0], "First PathComponent.");
     Assert.AreEqual("code", path.PathComponents[1], "Second PathComponent.");
     Assert.AreEqual("test", path.PathComponents[2], "Third PathComponent.");
 }