private static void AssertIsValidRoot(VirtualPathBuilder pb)
 {
     Assert.IsTrue(pb.IsAbsolutePath());
     Assert.IsTrue(pb.IsApplicationRoot());
     Assert.IsFalse(pb.IsRelativePath());
     Assert.IsFalse(pb.HasRootOperator());
     Assert.IsFalse(pb.HasExtension());
     Assert.IsFalse(pb.HasTrailingSlash(ignoreRoot:true));
     Assert.IsTrue(pb.IsValidAbsolutePath());
 }
 private static void MonkeyTest(string appName)
 {
     var pb = new VirtualPathBuilder(appName);
     Assert.AreEqual("", pb.ToString());
     Assert.AreEqual((appName+"/").Replace("//","/"), pb.ApplicationRoot);
     Assert.AreEqual(pb.Length, 0);
     Assert.IsTrue(pb == "");
     Assert.IsFalse(pb.IsAbsolutePath());
     Assert.IsFalse(pb.IsApplicationRoot());
     Assert.IsFalse(pb.IsRelativePath());
     Assert.IsFalse(pb.HasRootOperator());
     Assert.IsFalse(pb.HasExtension());
     Assert.IsFalse(pb.HasTrailingSlash());
     Assert.IsFalse(pb.IsValidAbsolutePath());
 }
        public void HasRootOperatorWorks()
        {
            var pb = new VirtualPathBuilder().CombineWith("~/");
            Assert.IsTrue(pb.HasRootOperator());
            Assert.IsFalse(pb.Normalize().HasRootOperator());
            Assert.IsTrue(pb == "/");
            Assert.IsTrue(pb.WithRootOperator().HasRootOperator());

            pb = new VirtualPathBuilder().CombineWith("~");
            Assert.IsTrue(pb.HasRootOperator());
            Assert.IsFalse(pb.Normalize().HasRootOperator());
            Assert.IsTrue(pb == "/");
            Assert.IsTrue(pb.WithRootOperator().HasRootOperator());

            pb = new VirtualPathBuilder().CombineWith("~/Foo");
            Assert.IsTrue(pb.HasRootOperator());
            Assert.IsFalse(pb.Normalize().HasRootOperator());
            Assert.IsTrue(pb == "/Foo");
            Assert.IsTrue(pb.WithRootOperator().HasRootOperator());
        }