public void ProjectFile_ExternalAbsoluteFileCreationTest()
        {
            //Arrange
            const string absolutePath1 = "D:\\Valentin\\Videos\\Wildlife.wmv";
            const string basePath = "D:\\Test\\RelTest2";
            const string expectedRelativePath1 = "../../Valentin/Videos/Wildlife.wmv";

            ProjectFile pf1;
            ProjectFile pf1a;

            //Act
            pf1 = ProjectFile.FromAbsolutePath(absolutePath1, basePath);
            pf1a = new ProjectFile { AbsolutePath = absolutePath1 };
            pf1a.MakeRelativeTo(basePath);

            //Assert
            Assert.AreEqual(expectedRelativePath1, pf1.RelativePath);
            Assert.AreEqual(expectedRelativePath1, pf1a.RelativePath);
        }
 /// <summary>
 /// Creates a ProjectFile with a given absolute(rooted) path, and a base path. The
 /// ProjectFile's RelativePath will be set relative to the given base path. Use this when
 /// given an absolute path but not a relative path. Note that the basePath does not have to
 /// contain the relative path.
 /// </summary>
 /// <param name="absolutePath">A rooted path.</param>
 /// <param name="basePath">A base path to make the file relative to.</param>
 /// <returns></returns>
 public static ProjectFile FromAbsolutePath(string absolutePath, string basePath)
 {
     var pf = new ProjectFile { AbsolutePath = absolutePath };
     pf.MakeRelativeTo(basePath);
     return pf;
 }
        public void ProjectFile_InternalAbsoluteFileCreationTest()
        {
            //Arrange
            const string pathToProjectFolder = "D:\\Test\\Wildlife";
            const string absolutePath1 = "D:\\Test\\Wildlife\\Wildlife.wmv";
            const string absolutePath2 = "D:\\Test\\Wildlife\\projectCache\\waveform.bin";
            const string expectedRelativePath1 = "Wildlife.wmv";
            const string expectedRelativePath2 = "projectCache/waveform.bin";

            ProjectFile pf1;
            ProjectFile pf1a;
            ProjectFile pf2;
            ProjectFile pf2a;

            //Act
            pf1 = ProjectFile.FromAbsolutePath(absolutePath1, pathToProjectFolder);
            pf1a = new ProjectFile { AbsolutePath = absolutePath1 };
            pf1a.MakeRelativeTo(pathToProjectFolder);

            pf2 = ProjectFile.FromAbsolutePath(absolutePath2, pathToProjectFolder);
            pf2a = new ProjectFile { AbsolutePath = absolutePath2 };
            pf2a.MakeRelativeTo(pathToProjectFolder);

            //Assert
            Assert.AreEqual(expectedRelativePath1, pf1.RelativePath);
            Assert.AreEqual(expectedRelativePath1, pf1a.RelativePath);
            Assert.AreEqual(expectedRelativePath2, pf2.RelativePath);
            Assert.AreEqual(expectedRelativePath2, pf2a.RelativePath);
        }