2 // NameValueHeaderValueTest.cs
5 // Marek Safar <marek.safar@gmail.com>
7 // Copyright (C) 2011 Xamarin Inc (http://www.xamarin.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 using System.Collections;
31 using System.Collections.Generic;
32 using NUnit.Framework;
33 using System.Net.Http.Headers;
35 namespace MonoTests.System.Net.Http.Headers
38 public class NameValueHeaderValueTest
41 public void Ctor_InvalidArguments ()
44 new NameValueHeaderValue (null);
46 } catch (ArgumentException) {
50 new NameValueHeaderValue (" ", null);
52 } catch (FormatException) {
56 new NameValueHeaderValue ("\x7f", null);
58 } catch (FormatException) {
62 new NameValueHeaderValue ("arg", "\x7f");
64 } catch (FormatException) {
69 public void Ctor_ValidArguments ()
71 NameValueHeaderValue nvh;
73 nvh = new NameValueHeaderValue ("arg", "~");
74 Assert.AreEqual ("~", nvh.Value, "#1");
76 nvh = new NameValueHeaderValue ("arg", "\"\x7f\x80\"");
77 Assert.AreEqual ("\"\x7f\x80\"", nvh.Value, "#2");
83 var value = new NameValueHeaderValue ("ab");
84 Assert.AreEqual (value, new NameValueHeaderValue ("ab"), "#1");
85 Assert.AreEqual (value, new NameValueHeaderValue ("AB"), "#2");
86 Assert.AreNotEqual (value, new NameValueHeaderValue ("AA"), "#3");
87 Assert.AreEqual (value, new NameValueHeaderValue ("AB", ""), "#3-1");
89 value = new NameValueHeaderValue ("ab", "DD");
90 Assert.AreEqual (value, new NameValueHeaderValue ("Ab", "DD"), "#4");
91 Assert.AreNotEqual (value, new NameValueHeaderValue ("AB"), "#5");
92 Assert.AreEqual (value, new NameValueHeaderValue ("Ab", "dd"), "#6");
98 var res = NameValueHeaderValue.Parse ("c");
99 Assert.AreEqual ("c", res.Name, "#1");
100 Assert.IsNull (res.Value, "#1a");
102 res = NameValueHeaderValue.Parse ("c = 1");
103 Assert.AreEqual ("c", res.Name, "#2");
104 Assert.AreEqual ("1", res.Value, "#2a");
105 Assert.AreEqual ("c=1", res.ToString (), "#2b");
107 res = NameValueHeaderValue.Parse ("c = \"1\"");
108 Assert.AreEqual ("c", res.Name, "#3");
109 Assert.AreEqual ("\"1\"", res.Value, "#3a");
110 Assert.AreEqual ("c=\"1\"", res.ToString (), "#3b");
114 public void Parse_Invalid ()
117 NameValueHeaderValue.Parse (null);
119 } catch (FormatException) {
123 NameValueHeaderValue.Parse (" ");
125 } catch (FormatException) {
129 NameValueHeaderValue.Parse ("a;b");
131 } catch (FormatException) {
135 NameValueHeaderValue.Parse ("c = 1;");
137 } catch (FormatException) {
142 public void Properties ()
144 var value = new NameValueHeaderValue ("s", "p");
145 Assert.AreEqual ("s", value.Name, "#1");
146 Assert.AreEqual ("p", value.Value, "#2");
148 value = new NameValueHeaderValue ("s");
149 Assert.AreEqual ("s", value.Name, "#3");
150 Assert.IsNull (value.Value, "#4");
153 Assert.AreEqual ("bb", value.Value, "#5");
159 public void Properties_Invalid ()
161 var value = new NameValueHeaderValue ("s");
165 } catch (FormatException) {
170 public void TryParse ()
172 NameValueHeaderValue res;
173 Assert.IsTrue (NameValueHeaderValue.TryParse ("a", out res), "#1");
174 Assert.AreEqual ("a", res.Name, "#2");
175 Assert.IsNull (res.Value, "#3");
179 public void TryParse_Invalid ()
181 NameValueHeaderValue res;
182 Assert.IsFalse (NameValueHeaderValue.TryParse ("", out res), "#1");
183 Assert.IsNull (res, "#2");
185 Assert.IsFalse (NameValueHeaderValue.TryParse ("\"a\"=b", out res), "#3");
186 Assert.IsNull (res, "#4");