2 // UriBuilderTest.cs - NUnit Test Cases for System.UriBuilder
\r
5 // Lawrence Pit (loz@cable.a2000.nl)
\r
6 // Martin Willemoes Hansen (mwh@sysrq.dk)
\r
8 // (C) 2003 Martin Willemoes Hansen
\r
11 using NUnit.Framework;
\r
14 namespace MonoTests.System
\r
17 public class UriBuilderTest : Assertion
\r
19 private UriBuilder b, b2, b3;
\r
22 public void GetReady()
\r
24 b = new UriBuilder ("http", "www.ximian.com", 80, "foo/bar/index.html");
\r
28 public void Constructors ()
\r
30 b = new UriBuilder ();
\r
31 AssertEquals ("#1", "http", b.Scheme);
\r
32 AssertEquals ("#2", "loopback", b.Host);
\r
33 AssertEquals ("#3", -1, b.Port);
\r
36 b = new UriBuilder ("http", "www.ximian.com", 80, "foo/bar/index.html", "extras");
\r
37 Fail ("#4 should have thrown an ArgumentException because extraValue must start with '?' or '#' character.");
\r
38 } catch (ArgumentException) {}
\r
40 b = new UriBuilder ("http", "www.ximian.com", 80, "foo/bar/index.html", "#extras");
\r
44 public void UserInfo ()
\r
46 b = new UriBuilder ("mailto://myname:mypwd@contoso.com?subject=hello");
\r
47 AssertEquals ("#1", "myname", b.UserName);
\r
48 AssertEquals ("#2", "mypwd", b.Password);
\r
50 b = new UriBuilder ("mailto", "contoso.com");
\r
51 b.UserName = "myname";
\r
52 b.Password = "mypwd";
\r
53 AssertEquals ("#3", "myname:mypwd", b.Uri.UserInfo);
\r
59 b.Path = ((char) 0xa9) + " 2002";
\r
60 AssertEquals ("#1", "%C2%A9%202002", b.Path);
\r
64 [ExpectedException (typeof (ArgumentOutOfRangeException))]
\r
65 public void BadPort1 ()
\r
71 [ExpectedException (typeof (ArgumentOutOfRangeException))]
\r
72 public void BadPort3 ()
\r
78 public void Query ()
\r
80 b.Query = ((char) 0xa9) + " 2002";
\r
81 AssertEquals ("#1", "?\xA9 2002", b.Query);
\r
82 AssertEquals ("#2", String.Empty, b.Fragment);
\r
84 AssertEquals ("#3", "??test", b.Query);
\r
86 AssertEquals ("#4", String.Empty, b.Query);
\r
90 public void Fragment ()
\r
92 b.Fragment = ((char) 0xa9) + " 2002";
\r
93 AssertEquals ("#1", "#\xA9 2002", b.Fragment);
\r
94 AssertEquals ("#2", String.Empty, b.Query);
\r
95 b.Fragment = "#test";
\r
96 AssertEquals ("#3", "##test", b.Fragment);
\r
98 AssertEquals ("#4", String.Empty, b.Fragment);
\r
102 public void Scheme ()
\r
105 AssertEquals ("#1", b.Scheme, "http");
\r
106 b.Scheme = "http:";
\r
107 AssertEquals ("#2", b.Scheme, "http");
\r
108 b.Scheme = "http://";
\r
109 AssertEquals ("#3", b.Scheme, "http");
\r
110 b.Scheme = "http://foo/bar";
\r
111 AssertEquals ("#4", b.Scheme, "http");
\r
112 b.Scheme = "mailto:";
\r
113 AssertEquals ("#5", b.Scheme, "mailto");
\r
114 b.Scheme = "unknown";
\r
115 AssertEquals ("#6", b.Scheme, "unknown");
\r
116 b.Scheme = "unknown://";
\r
117 AssertEquals ("#7", b.Scheme, "unknown");
\r
121 public void Equals ()
\r
123 b = new UriBuilder ("http://", "www.ximian.com", 80, "foo/bar/index.html?item=1");
\r
124 b2 = new UriBuilder ("http", "www.ximian.com", 80, "/foo/bar/index.html", "?item=1");
\r
125 b3 = new UriBuilder (new Uri ("http://www.ximian.com/foo/bar/index.html?item=1"));
\r
127 Assert ("#1", b.Equals (b2));
\r
128 Assert ("#2", b.Uri.Equals (b2.Uri));
\r
129 Assert ("#3", b.Equals (b3));
\r
130 Assert ("#4", b2.Equals (b3));
\r
131 Assert ("#5", b3.Equals (b));
\r
135 public void ToStringTest ()
\r
137 AssertEquals ("ToString ()", "http://www.ximian.com:80/foo/bar/index.html", b.ToString ());
\r
138 AssertEquals ("Uri.ToString ()", "http://www.ximian.com/foo/bar/index.html", b.Uri.ToString ());
\r
142 public void EmptyQuery () // bug 57082
\r
144 b = new UriBuilder ("http", "www.ximian.com", 80, "/lalala/lelele.aspx", null);
\r
145 string noquery = "http://www.ximian.com/lalala/lelele.aspx";
\r
146 AssertEquals ("#01", b.Uri.ToString (), noquery);
\r
147 b = new UriBuilder ("http", "www.ximian.com", 80, "/lalala/lelele.aspx", "?");
\r
148 AssertEquals ("#02", b.Uri.ToString (), noquery);
\r
149 b = new UriBuilder ("http", "www.ximian.com", 80, "/lalala/lelele.aspx", "??");
\r
150 AssertEquals ("#03", b.Uri.ToString (), noquery + "??");
\r
151 b = new UriBuilder ("http", "www.ximian.com", 80, "/lalala/lelele.aspx", "?something");
\r
152 AssertEquals ("#04", b.Uri.ToString (), noquery + "?something");
\r