1 // System.Net.Sockets.IPv6MulticastOptionTest.cs
4 // Gert Driesen (drieseng@users.sourceforge.net)
6 // Copyright (c) 2009 Gert Driesen
11 using System.Net.Sockets;
13 using NUnit.Framework;
15 namespace MonoTests.System.Net.Sockets
18 public class IPv6MulticastOptionTest
20 [Test] // .ctor (IPAddress)
21 public void Constructor1 ()
23 IPv6MulticastOption option;
26 group = IPAddress.Parse ("ff02::1");
27 option = new IPv6MulticastOption (group);
28 Assert.AreSame (group, option.Group, "#A:Group");
29 Assert.AreEqual (0, option.InterfaceIndex, "#A:InterfaceIndex");
31 group = IPAddress.Parse ("224.0.0.23");
32 option = new IPv6MulticastOption (group);
33 Assert.AreSame (group, option.Group, "#B:Group");
34 Assert.AreEqual (0, option.InterfaceIndex, "#B:InterfaceIndex");
37 [Test] // .ctor (IPAddress)
38 public void Constructor1_Group_Null ()
41 new IPv6MulticastOption ((IPAddress) null);
43 } catch (ArgumentNullException ex) {
44 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
45 Assert.IsNull (ex.InnerException, "#3");
46 Assert.IsNotNull (ex.Message, "#4");
47 Assert.AreEqual ("group", ex.ParamName, "#5");
51 [Test] // .ctor (IPAddress, Int64)
52 public void Constructor2 ()
54 IPv6MulticastOption option;
58 group = IPAddress.Parse ("239.255.255.250");
60 option = new IPv6MulticastOption (group, interfaceIndex);
61 Assert.AreSame (group, option.Group, "#A:Group");
62 Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#A:InterfaceIndex");
64 group = IPAddress.Parse ("ff02::1");
66 option = new IPv6MulticastOption (group, interfaceIndex);
67 Assert.AreSame (group, option.Group, "#B:Group");
68 Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#B:InterfaceIndex");
70 group = IPAddress.Parse ("239.255.255.250");
72 option = new IPv6MulticastOption (group, interfaceIndex);
73 Assert.AreSame (group, option.Group, "#C:Group");
74 Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#C:InterfaceIndex");
76 group = IPAddress.Parse ("ff02::1");
78 option = new IPv6MulticastOption (group, interfaceIndex);
79 Assert.AreSame (group, option.Group, "#D:Group");
80 Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#D:InterfaceIndex");
82 group = IPAddress.Parse ("239.255.255.250");
83 interfaceIndex = 0xFFFFFFFF;
84 option = new IPv6MulticastOption (group, interfaceIndex);
85 Assert.AreSame (group, option.Group, "#E:Group");
86 Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#E:InterfaceIndex");
88 group = IPAddress.Parse ("ff02::1");
89 interfaceIndex = 0xFFFFFFFF;
90 option = new IPv6MulticastOption (group, interfaceIndex);
91 Assert.AreSame (group, option.Group, "#F:Group");
92 Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#F:InterfaceIndex");
95 [Test] // .ctor (IPAddress, Int64)
96 public void Constructor2_Group_Null ()
98 IPAddress group = null;
101 new IPv6MulticastOption (group, 0);
103 } catch (ArgumentNullException ex) {
104 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
105 Assert.IsNull (ex.InnerException, "#3");
106 Assert.IsNotNull (ex.Message, "#4");
107 Assert.AreEqual ("group", ex.ParamName, "#5");
111 [Test] // .ctor (IPAddress, Int64)
112 public void Constructor2_Ifindex_OutOfRange ()
114 IPAddress group = IPAddress.Parse ("ff02::1");
117 new IPv6MulticastOption (group, -1);
119 } catch (ArgumentOutOfRangeException ex) {
120 // Specified argument was out of the range of valid values
121 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
122 Assert.IsNull (ex.InnerException, "#A3");
123 Assert.IsNotNull (ex.Message, "#A4");
124 Assert.AreEqual ("ifindex", ex.ParamName, "#A5");
128 new IPv6MulticastOption (group, 0x100000000);
130 } catch (ArgumentOutOfRangeException ex) {
131 // Specified argument was out of the range of valid values
132 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
133 Assert.IsNull (ex.InnerException, "#B3");
134 Assert.IsNotNull (ex.Message, "#B4");
135 Assert.AreEqual ("ifindex", ex.ParamName, "#B5");
143 IPv6MulticastOption option;
145 group = IPAddress.Parse ("239.255.255.250");
146 option = new IPv6MulticastOption (group, 5L);
147 group = IPAddress.Parse ("224.0.0.23");
148 option.Group = group;
149 Assert.AreSame (group, option.Group, "#A1");
150 Assert.AreEqual (5L, option.InterfaceIndex, "#A2");
151 group = IPAddress.Parse ("239.255.255.250");
152 option.Group = group;
153 Assert.AreSame (group, option.Group, "#B1");
154 Assert.AreEqual (5L, option.InterfaceIndex, "#B2");
155 group = IPAddress.Parse ("ff02::1");
156 option.Group = group;
157 Assert.AreSame (group, option.Group, "#C1");
158 Assert.AreEqual (5L, option.InterfaceIndex, "#C2");
162 public void Group_Value_Null ()
164 IPAddress group = IPAddress.Parse ("239.255.255.250");
165 IPv6MulticastOption option = new IPv6MulticastOption (group, 10);
170 } catch (ArgumentNullException ex) {
171 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
172 Assert.IsNull (ex.InnerException, "#3");
173 Assert.IsNotNull (ex.Message, "#4");
174 Assert.AreEqual ("value", ex.ParamName, "#5");
179 public void InterfaceIndex ()
182 IPv6MulticastOption option;
184 group = IPAddress.Parse ("239.255.255.250");
185 option = new IPv6MulticastOption (group, 10);
186 option.InterfaceIndex = 0;
187 Assert.AreSame (group, option.Group, "#A1");
188 Assert.AreEqual (0, option.InterfaceIndex, "#A2");
189 option.InterfaceIndex = 124;
190 Assert.AreSame (group, option.Group, "#B1");
191 Assert.AreEqual (124, option.InterfaceIndex, "#B2");
192 option.InterfaceIndex = 0xFFFFFFFF;
193 Assert.AreSame (group, option.Group, "#C1");
194 Assert.AreEqual (0xFFFFFFFF, option.InterfaceIndex, "#C3");
198 public void InterfaceIndex_Value_OutOfRange ()
200 IPAddress group = IPAddress.Parse ("239.255.255.250");
201 IPv6MulticastOption option = new IPv6MulticastOption (group, 10);
204 option.InterfaceIndex = -1;
206 } catch (ArgumentOutOfRangeException ex) {
207 // Specified argument was out of the range of valid values
208 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
209 Assert.IsNull (ex.InnerException, "#A3");
210 Assert.IsNotNull (ex.Message, "#A4");
211 Assert.AreEqual ("value", ex.ParamName, "#A5");
215 option.InterfaceIndex = 0x100000000;
217 } catch (ArgumentOutOfRangeException ex) {
218 // Specified argument was out of the range of valid values
219 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
220 Assert.IsNull (ex.InnerException, "#B3");
221 Assert.IsNotNull (ex.Message, "#B4");
222 Assert.AreEqual ("value", ex.ParamName, "#B5");
225 // ensure original value was retained
226 Assert.AreEqual (10, option.InterfaceIndex, "#C");