public void TrailingPeriodsNotTrimmed() { TestAsFullAndPartialTrust(fullTrust => { string claimedIdentifier = "https://me.yahoo.com/a/AsDf.#asdf"; Identifier id = claimedIdentifier; Assert.AreEqual(claimedIdentifier, id.OriginalString); Assert.AreEqual(claimedIdentifier, id.ToString()); UriIdentifier idUri = new UriIdentifier(claimedIdentifier); Assert.AreEqual(claimedIdentifier, idUri.OriginalString); Assert.AreEqual(claimedIdentifier, idUri.ToString()); if (fullTrust) { Assert.AreEqual(claimedIdentifier, idUri.Uri.AbsoluteUri); } Assert.AreEqual(Uri.UriSchemeHttps, idUri.Uri.Scheme); // in case custom scheme tricks are played, this must still match Assert.AreEqual("https://me.yahoo.com/a/AsDf.", idUri.TrimFragment().ToString()); Assert.AreEqual("https://me.yahoo.com/a/AsDf.", idUri.TrimFragment().OriginalString); Assert.AreEqual(id.ToString(), new UriIdentifier((Uri)idUri).ToString(), "Round tripping UriIdentifier->Uri->UriIdentifier failed."); idUri = new UriIdentifier(new Uri(claimedIdentifier)); Assert.AreEqual(claimedIdentifier, idUri.OriginalString); Assert.AreEqual(claimedIdentifier, idUri.ToString()); if (fullTrust) { Assert.AreEqual(claimedIdentifier, idUri.Uri.AbsoluteUri); } Assert.AreEqual(Uri.UriSchemeHttps, idUri.Uri.Scheme); // in case custom scheme tricks are played, this must still match Assert.AreEqual("https://me.yahoo.com/a/AsDf.", idUri.TrimFragment().ToString()); Assert.AreEqual("https://me.yahoo.com/a/AsDf.", idUri.TrimFragment().OriginalString); Assert.AreEqual(id.ToString(), new UriIdentifier((Uri)idUri).ToString(), "Round tripping UriIdentifier->Uri->UriIdentifier failed."); claimedIdentifier = "https://me.yahoo.com:443/a/AsDf.#asdf"; id = claimedIdentifier; Assert.AreEqual(claimedIdentifier, id.OriginalString); Assert.AreEqual("https://me.yahoo.com/a/AsDf.#asdf", id.ToString()); }); }