This commit was manufactured by cvs2svn to create branch 'mono-1-0'.
[mono.git] / mcs / class / System / Test / System / UriBuilderTest.cs
1 //\r
2 // UriBuilderTest.cs - NUnit Test Cases for System.UriBuilder\r
3 //\r
4 // Authors:\r
5 //   Lawrence Pit (loz@cable.a2000.nl)\r
6 //   Martin Willemoes Hansen (mwh@sysrq.dk)\r
7 //\r
8 // (C) 2003 Martin Willemoes Hansen\r
9 //\r
10 \r
11 using NUnit.Framework;\r
12 using System;\r
13 \r
14 namespace MonoTests.System\r
15 {\r
16         [TestFixture]\r
17         public class UriBuilderTest : Assertion\r
18         {\r
19                 private UriBuilder b, b2, b3;\r
20                 \r
21                 [SetUp]\r
22                 public void GetReady()\r
23                 {\r
24                         b = new UriBuilder ("http", "www.ximian.com", 80, "foo/bar/index.html");\r
25                 }\r
26 \r
27                 [Test]\r
28                 public void Constructors ()\r
29                 {\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
34                         \r
35                         try {\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
39                         \r
40                         b = new UriBuilder ("http", "www.ximian.com", 80, "foo/bar/index.html", "#extras");\r
41                 }\r
42                 \r
43                 [Test]\r
44                 public void UserInfo ()\r
45                 {                       \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
49                         \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
54                 }\r
55 \r
56                 [Test]\r
57                 public void Path ()\r
58                 {                       \r
59                         b.Path = ((char) 0xa9) + " 2002";\r
60                         AssertEquals ("#1", "%C2%A9%202002", b.Path);                   \r
61                 }       \r
62                 \r
63                 [Test]\r
64                 [ExpectedException (typeof (ArgumentOutOfRangeException))]\r
65                 public void BadPort1 ()\r
66                 {\r
67                         b.Port = -12345;\r
68                 }\r
69 \r
70                 [Test]\r
71                 [ExpectedException (typeof (ArgumentOutOfRangeException))]\r
72                 public void BadPort3 ()\r
73                 {\r
74                         b.Port = -1;\r
75                 }\r
76 \r
77                 [Test]\r
78                 public void Query ()\r
79                 {\r
80                         b.Query = ((char) 0xa9) + " 2002";\r
81                         AssertEquals ("#1", "?\xA9 2002", b.Query);                     \r
82                         AssertEquals ("#2", String.Empty, b.Fragment);\r
83                         b.Query = "?test";\r
84                         AssertEquals ("#3", "??test", b.Query);\r
85                         b.Query = null;\r
86                         AssertEquals ("#4", String.Empty, b.Query);\r
87                 }\r
88                 \r
89                 [Test]\r
90                 public void Fragment ()\r
91                 {\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
97                         b.Fragment = null;\r
98                         AssertEquals ("#4", String.Empty, b.Fragment);\r
99                 }\r
100                 \r
101                 [Test]\r
102                 public void Scheme ()\r
103                 {\r
104                         b.Scheme = "http";\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
118                 }\r
119                 \r
120                 [Test]\r
121                 public void Equals ()\r
122                 {\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
126                         \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
132                 }\r
133                 \r
134                 [Test]\r
135                 public void ToStringTest ()\r
136                 {\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
139                 }\r
140 \r
141                 [Test]\r
142                 public void EmptyQuery () // bug 57082\r
143                 {\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
153                 }\r
154         }\r
155 }\r
156 \r