2 // WebHeaderCollectionTest.cs - NUnit Test Cases for System.Net.WebHeaderCollection
\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 using System.Collections;
\r
15 using System.Collections.Specialized;
\r
17 namespace MonoTests.System.Net
\r
21 public class WebHeaderCollectionTest
\r
23 WebHeaderCollection col;
\r
26 public void GetReady ()
\r
28 col = new WebHeaderCollection ();
\r
29 col.Add ("Name1: Value1");
\r
30 col.Add ("Name2: Value2");
\r
38 Assertion.Fail ("#1");
\r
39 } catch (ArgumentNullException) {}
\r
42 Assertion.Fail ("#2");
\r
43 } catch (ArgumentException) {}
\r
46 Assertion.Fail ("#3");
\r
47 } catch (ArgumentException) {}
\r
50 Assertion.Fail ("#4");
\r
51 } catch (ArgumentException) {}
\r
54 Assertion.Fail ("#5");
\r
55 } catch (ArgumentException) {}
\r
58 col.Add ("XHost: foo");
\r
59 } catch (ArgumentException) {
\r
60 Assertion.Fail ("#7");
\r
65 col.Add ("XHost" + ((char) 0xa9) + ": foo");
\r
66 Assertion.Fail ("#8");
\r
67 } catch (ArgumentException) {}
\r
69 col.Add ("XHost: foo" + (char) 0xa9);
\r
70 } catch (ArgumentException) {
\r
71 Assertion.Fail ("#9");
\r
74 col.Add ("XHost: foo" + (char) 0x7f);
\r
75 Assertion.Fail ("#10");
\r
76 } catch (ArgumentException) {
\r
81 col.Add ("XHost", null);
\r
82 } catch (ArgumentException) {
\r
83 Assertion.Fail ("#11");
\r
86 col.Add ("XHost:");
\r
87 } catch (ArgumentException) {
\r
88 Assertion.Fail ("#12");
\r
93 // this can only be tested in namespace System.Net
\r
95 WebHeaderCollection col2 = new WebHeaderCollection (true);
\r
96 col2.Add ("Host: foo");
\r
97 Assertion.Fail ("#13: should fail according to spec");
\r
98 } catch (ArgumentException) {}
\r
103 [Category ("NotWorking")]
\r
104 public void GetValues ()
\r
106 WebHeaderCollection w = new WebHeaderCollection ();
\r
107 w.Add ("Hello", "H1");
\r
108 w.Add ("Hello", "H2");
\r
109 w.Add ("Hello", "H3,H4");
\r
111 string [] sa = w.GetValues ("Hello");
\r
112 Assertion.AssertEquals ("#1", 3, sa.Length);
\r
113 Assertion.AssertEquals ("#2", "H1,H2,H3,H4", w.Get ("Hello"));
\r
115 w = new WebHeaderCollection ();
\r
116 w.Add ("Accept", "H1");
\r
117 w.Add ("Accept", "H2");
\r
118 w.Add ("Accept", "H3,H4");
\r
119 Assertion.AssertEquals ("#3a", 3, w.GetValues (0).Length);
\r
120 Assertion.AssertEquals ("#3b", 4, w.GetValues ("Accept").Length);
\r
121 Assertion.AssertEquals ("#4", "H1,H2,H3,H4", w.Get ("Accept"));
\r
123 w = new WebHeaderCollection ();
\r
124 w.Add ("Allow", "H1");
\r
125 w.Add ("Allow", "H2");
\r
126 w.Add ("Allow", "H3,H4");
\r
127 sa = w.GetValues ("Allow");
\r
128 Assertion.AssertEquals ("#5", 4, sa.Length);
\r
129 Assertion.AssertEquals ("#6", "H1,H2,H3,H4", w.Get ("Allow"));
\r
131 w = new WebHeaderCollection ();
\r
132 w.Add ("AUTHorization", "H1, H2, H3");
\r
133 sa = w.GetValues ("authorization");
\r
134 Assertion.AssertEquals ("#9", 3, sa.Length);
\r
136 w = new WebHeaderCollection ();
\r
137 w.Add ("proxy-authenticate", "H1, H2, H3");
\r
138 sa = w.GetValues ("Proxy-Authenticate");
\r
139 Assertion.AssertEquals ("#9", 3, sa.Length);
\r
141 w = new WebHeaderCollection ();
\r
142 w.Add ("expect", "H1,\tH2, H3 ");
\r
143 sa = w.GetValues ("EXPECT");
\r
144 Assertion.AssertEquals ("#10", 3, sa.Length);
\r
145 Assertion.AssertEquals ("#11", "H2", sa [1]);
\r
146 Assertion.AssertEquals ("#12", "H3", sa [2]);
\r
149 w.GetValues (null);
\r
150 Assertion.Fail ("#13");
\r
151 } catch (ArgumentNullException) {}
\r
152 Assertion.AssertEquals ("#14", null, w.GetValues (""));
\r
153 Assertion.AssertEquals ("#15", null, w.GetValues ("NotExistent"));
\r
157 public void Indexers ()
\r
160 Assertion.AssertEquals ("#1.1", "Value1", ((NameValueCollection)col)[0]);
\r
161 //FIXME: test also HttpRequestHeader and HttpResponseHeader
\r
163 Assertion.AssertEquals ("#1", "Value1", col [0]);
\r
165 Assertion.AssertEquals ("#2", "Value1", col ["Name1"]);
\r
166 Assertion.AssertEquals ("#3", "Value1", col ["NAME1"]);
\r
170 public void Remove ()
\r
172 col.Remove ("Name1");
\r
173 col.Remove ("NameNotExist");
\r
174 Assertion.AssertEquals ("#1", 1, col.Count);
\r
177 // this can only be tested in namespace System.Net
\r
179 WebHeaderCollection col2 = new WebHeaderCollection (true);
\r
180 col2.Add ("Host", "foo");
\r
181 col2.Remove ("Host");
\r
182 Assertion.Fail ("#2: should fail according to spec");
\r
183 } catch (ArgumentException) {}
\r
190 col.Add ("Name1", "Value1b");
\r
191 col.Set ("Name1", "\t X \t");
\r
192 Assertion.AssertEquals ("#1", "X", col.Get ("Name1"));
\r
196 public void IsRestricted ()
\r
198 Assertion.Assert ("#1", !WebHeaderCollection.IsRestricted ("Xhost"));
\r
199 Assertion.Assert ("#2", WebHeaderCollection.IsRestricted ("Host"));
\r
200 Assertion.Assert ("#3", WebHeaderCollection.IsRestricted ("HOST"));
\r
201 Assertion.Assert ("#4", WebHeaderCollection.IsRestricted ("Transfer-Encoding"));
\r
202 Assertion.Assert ("#5", WebHeaderCollection.IsRestricted ("user-agent"));
\r
203 Assertion.Assert ("#6", WebHeaderCollection.IsRestricted ("accept"));
\r
204 Assertion.Assert ("#7", !WebHeaderCollection.IsRestricted ("accept-charset"));
\r
208 public void ToStringTest ()
\r
210 col.Add ("Name1", "Value1b");
\r
211 col.Add ("Name3", "Value3a\r\n Value3b");
\r
212 col.Add ("Name4", " Value4 ");
\r
213 Assertion.AssertEquals ("#1", "Name1: Value1,Value1b\r\nName2: Value2\r\nName3: Value3a\r\n Value3b\r\nName4: Value4\r\n\r\n", col.ToString ());
\r