* Removed: Old AllTests.cs files
[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 \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                         Assertion.AssertEquals ("#1", "http", b.Scheme);\r
32                         Assertion.AssertEquals ("#2", "loopback", b.Host);\r
33                         Assertion.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                                 Assertion.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                         Assertion.AssertEquals ("#1", "myname", b.UserName);\r
48                         Assertion.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                         Assertion.AssertEquals ("#3: known to fail with ms.net.", "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                         Assertion.AssertEquals ("#1: known to fail with ms.net, should at least return a slash.", "/%A9%202002", b.Path);                       \r
61                 }       \r
62                 \r
63                 [Test]\r
64                 public void Port ()\r
65                 {\r
66                         try {\r
67                                 b.Port = -12345;\r
68                                 Assertion.Fail ("#1 should've failed, illegal port.");\r
69                         } catch (ArgumentOutOfRangeException) {}\r
70                         try {\r
71                                 b.Port = 123456789;\r
72                                 Assertion.Fail ("#2 should've failed, illegal port.");\r
73                         } catch (ArgumentOutOfRangeException) {}\r
74                         try {\r
75                                 b.Port = -1;\r
76                                 Assertion.AssertEquals ("#3", -1, b.Port);\r
77                         } catch (ArgumentOutOfRangeException) {\r
78                                 Assertion.Fail ("#4: spec should allow -1 as value.");\r
79                         }\r
80                 }\r
81                 \r
82                 [Test]\r
83                 public void Query ()\r
84                 {\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
88                         b.Query = "?test";\r
89                         Assertion.AssertEquals ("#3", "??test", b.Query);\r
90                         b.Query = null;\r
91                         Assertion.AssertEquals ("#4", String.Empty, b.Query);\r
92                 }\r
93                 \r
94                 [Test]\r
95                 public void Fragment ()\r
96                 {\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
102                         b.Fragment = null;\r
103                         Assertion.AssertEquals ("#4", String.Empty, b.Fragment);\r
104                 }\r
105                 \r
106                 [Test]\r
107                 public void Scheme ()\r
108                 {\r
109                         b.Scheme = "http";\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
123                 }\r
124                 \r
125                 [Test]\r
126                 public void Equals ()\r
127                 {\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
131                         \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
137                 }\r
138                 \r
139                 [Test]\r
140                 public void ToStringTest ()\r
141                 {\r
142                         Assertion.AssertEquals ("#1 known to fail with ms.net, should've been canonicalized.", b.Uri.ToString (), b.ToString ());\r
143                 }\r
144         }\r
145 }\r
146 \r