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
\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 Assertion.AssertEquals ("#1", "http", b.Scheme);
\r
32 Assertion.AssertEquals ("#2", "loopback", b.Host);
\r
33 Assertion.AssertEquals ("#3", -1, b.Port);
\r
36 b = new UriBuilder ("http://", "www.ximian.com", 80, "foo/bar/index.html", "extras");
\r
37 Assertion.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 Assertion.AssertEquals ("#1", "myname", b.UserName);
\r
48 Assertion.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 Assertion.AssertEquals ("#3: known to fail with ms.net.", "myname:mypwd", b.Uri.UserInfo);
\r
59 b.Path = ((char) 0xa9) + " 2002";
\r
60 Assertion.AssertEquals ("#1: known to fail with ms.net, should at least return a slash.", "/%A9%202002", b.Path);
\r
68 Assertion.Fail ("#1 should've failed, illegal port.");
\r
69 } catch (ArgumentOutOfRangeException) {}
\r
72 Assertion.Fail ("#2 should've failed, illegal port.");
\r
73 } catch (ArgumentOutOfRangeException) {}
\r
76 Assertion.AssertEquals ("#3", -1, b.Port);
\r
77 } catch (ArgumentOutOfRangeException) {
\r
78 Assertion.Fail ("#4: spec should allow -1 as value.");
\r
83 public void Query ()
\r
85 b.Query = ((char) 0xa9) + " 2002";
\r
86 Assertion.AssertEquals ("#1: known to fail with ms.net, should've been escaped.", "?%A9%202002", b.Query);
\r
87 Assertion.AssertEquals ("#2", String.Empty, b.Fragment);
\r
89 Assertion.AssertEquals ("#3", "??test", b.Query);
\r
91 Assertion.AssertEquals ("#4", String.Empty, b.Query);
\r
95 public void Fragment ()
\r
97 b.Fragment = ((char) 0xa9) + " 2002";
\r
98 Assertion.AssertEquals ("#1: known to fail with ms.net, should've been escaped.", "#%A9%202002", b.Fragment);
\r
99 Assertion.AssertEquals ("#2", String.Empty, b.Query);
\r
100 b.Fragment = "#test";
\r
101 Assertion.AssertEquals ("#3", "##test", b.Fragment);
\r
103 Assertion.AssertEquals ("#4", String.Empty, b.Fragment);
\r
107 public void Scheme ()
\r
110 Assertion.AssertEquals ("#1", b.Scheme, "http");
\r
111 b.Scheme = "http:";
\r
112 Assertion.AssertEquals ("#2", b.Scheme, "http");
\r
113 b.Scheme = "http://";
\r
114 Assertion.AssertEquals ("#3", b.Scheme, "http");
\r
115 b.Scheme = "http://foo/bar";
\r
116 Assertion.AssertEquals ("#4", b.Scheme, "http");
\r
117 b.Scheme = "mailto:";
\r
118 Assertion.AssertEquals ("#5", b.Scheme, "mailto");
\r
119 b.Scheme = "unknown";
\r
120 Assertion.AssertEquals ("#6", b.Scheme, "unknown");
\r
121 b.Scheme = "unknown://";
\r
122 Assertion.AssertEquals ("#7", b.Scheme, "unknown");
\r
126 public void Equals ()
\r
128 b = new UriBuilder ("http://", "www.ximian.com", 80, "foo/bar/index.html?item=1");
\r
129 b2 = new UriBuilder ("http", "www.ximian.com", 80, "/foo/bar/index.html", "?item=1");
\r
130 b3 = new UriBuilder (new Uri ("http://www.ximian.com/foo/bar/index.html?item=1"));
\r
132 Assertion.Assert ("#1", b.Equals (b2));
\r
133 Assertion.Assert ("#2", b.Uri.Equals (b2.Uri));
\r
134 Assertion.Assert ("#3", b.Equals (b3));
\r
135 Assertion.Assert ("#4", b2.Equals (b3));
\r
136 Assertion.Assert ("#5", b3.Equals (b));
\r
140 public void ToStringTest ()
\r
142 Assertion.AssertEquals ("#1 known to fail with ms.net, should've been canonicalized.", b.Uri.ToString (), b.ToString ());
\r