static void PathDemo() { OSPath path = @"/foo\bar.txt"; // Windows output WriteLine(path); // \foo\bar.txt WriteLine(path.Windows); // \foo\bar.txt WriteLine(path.Unix); // /foo/bar.txt // MacOS output WriteLine(path); // /foo/bar.txt WriteLine(path.Windows); // \foo\bar.txt WriteLine(path.Unix); // /foo/bar.txt // It also helpes converting between relative and absolute paths: OSPath ap = "/foo/bar"; WriteLine(ap.Relative.Unix); // foo/bar WriteLine(ap.Absolute.Unix); // /foo/bar OSPath rp = "/foo/bar"; WriteLine(rp.Relative.Unix); // foo/bar WriteLine(rp.Absolute.Unix); // /foo/bar // And to perform path arithmetics (Windows output): OSPath root = @"/foo\bar"; WriteLine(root + "file.txt"); // \foo\bar\file.txt WriteLine(root + "file.txt" - root); // file.txt }
public void Extract_Local_Path() { OSPath path = "/foo/bar/test.txt"; var file = path - "\\foo"; Assert.AreEqual("bar/test.txt", file.Unix); }
public void Unify_Rootless_Windows_Path() { OSPath path = "\\foo bar\\file.txt"; Assert.IsFalse(path.HasVolume); Assert.AreEqual("\\foo bar\\file.txt", path.Simplified.Windows); Assert.AreEqual("\\foo bar\\file.txt", path.Windows); Assert.AreEqual("/foo bar/file.txt", path.Unix); Assert.AreEqual( OSPath.IsWindows ? "\\foo bar\\file.txt" : "/foo bar/file.txt", path.Normalized); Assert.AreEqual("foo bar\\file.txt", path.Relative.Windows); Assert.AreEqual("foo bar/file.txt", path.Relative.Unix); Assert.AreEqual( OSPath.IsWindows ? "foo bar\\file.txt" : "foo bar/file.txt", path.Relative.Normalized); Assert.AreEqual("\\foo bar\\file.txt", path.Absolute.Windows); Assert.AreEqual("/foo bar/file.txt", path.Absolute.Unix); Assert.AreEqual( OSPath.IsWindows ? "\\foo bar\\file.txt" : "/foo bar/file.txt", path.Absolute.Normalized); }
public void Combine() { OSPath path = "/foo"; var file = path + "\\bar\\test.txt"; Assert.AreEqual("/foo/bar/test.txt", file.Unix); }