IPv6MulticastOptionTest.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. // System.Net.Sockets.IPv6MulticastOptionTest.cs
  2. //
  3. // Authors:
  4. // Gert Driesen ([email protected])
  5. //
  6. // Copyright (c) 2009 Gert Driesen
  7. //
  8. using System;
  9. using System.Net;
  10. using System.Net.Sockets;
  11. using NUnit.Framework;
  12. namespace MonoTests.System.Net.Sockets
  13. {
  14. [TestFixture]
  15. public class IPv6MulticastOptionTest
  16. {
  17. [Test] // .ctor (IPAddress)
  18. public void Constructor1 ()
  19. {
  20. IPv6MulticastOption option;
  21. IPAddress group;
  22. group = IPAddress.Parse ("ff02::1");
  23. option = new IPv6MulticastOption (group);
  24. Assert.AreSame (group, option.Group, "#A:Group");
  25. Assert.AreEqual (0, option.InterfaceIndex, "#A:InterfaceIndex");
  26. group = IPAddress.Parse ("224.0.0.23");
  27. option = new IPv6MulticastOption (group);
  28. Assert.AreSame (group, option.Group, "#B:Group");
  29. Assert.AreEqual (0, option.InterfaceIndex, "#B:InterfaceIndex");
  30. }
  31. [Test] // .ctor (IPAddress)
  32. public void Constructor1_Group_Null ()
  33. {
  34. try {
  35. new IPv6MulticastOption ((IPAddress) null);
  36. Assert.Fail ("#1");
  37. } catch (ArgumentNullException ex) {
  38. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  39. Assert.IsNull (ex.InnerException, "#3");
  40. Assert.IsNotNull (ex.Message, "#4");
  41. Assert.AreEqual ("group", ex.ParamName, "#5");
  42. }
  43. }
  44. [Test] // .ctor (IPAddress, Int64)
  45. public void Constructor2 ()
  46. {
  47. IPv6MulticastOption option;
  48. IPAddress group;
  49. long interfaceIndex;
  50. group = IPAddress.Parse ("239.255.255.250");
  51. interfaceIndex = 0;
  52. option = new IPv6MulticastOption (group, interfaceIndex);
  53. Assert.AreSame (group, option.Group, "#A:Group");
  54. Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#A:InterfaceIndex");
  55. group = IPAddress.Parse ("ff02::1");
  56. interfaceIndex = 0;
  57. option = new IPv6MulticastOption (group, interfaceIndex);
  58. Assert.AreSame (group, option.Group, "#B:Group");
  59. Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#B:InterfaceIndex");
  60. group = IPAddress.Parse ("239.255.255.250");
  61. interfaceIndex = 124;
  62. option = new IPv6MulticastOption (group, interfaceIndex);
  63. Assert.AreSame (group, option.Group, "#C:Group");
  64. Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#C:InterfaceIndex");
  65. group = IPAddress.Parse ("ff02::1");
  66. interfaceIndex = 124;
  67. option = new IPv6MulticastOption (group, interfaceIndex);
  68. Assert.AreSame (group, option.Group, "#D:Group");
  69. Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#D:InterfaceIndex");
  70. group = IPAddress.Parse ("239.255.255.250");
  71. interfaceIndex = 0xFFFFFFFF;
  72. option = new IPv6MulticastOption (group, interfaceIndex);
  73. Assert.AreSame (group, option.Group, "#E:Group");
  74. Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#E:InterfaceIndex");
  75. group = IPAddress.Parse ("ff02::1");
  76. interfaceIndex = 0xFFFFFFFF;
  77. option = new IPv6MulticastOption (group, interfaceIndex);
  78. Assert.AreSame (group, option.Group, "#F:Group");
  79. Assert.AreEqual (interfaceIndex, option.InterfaceIndex, "#F:InterfaceIndex");
  80. }
  81. [Test] // .ctor (IPAddress, Int64)
  82. public void Constructor2_Group_Null ()
  83. {
  84. IPAddress group = null;
  85. try {
  86. new IPv6MulticastOption (group, 0);
  87. Assert.Fail ("#1");
  88. } catch (ArgumentNullException ex) {
  89. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  90. Assert.IsNull (ex.InnerException, "#3");
  91. Assert.IsNotNull (ex.Message, "#4");
  92. Assert.AreEqual ("group", ex.ParamName, "#5");
  93. }
  94. }
  95. [Test] // .ctor (IPAddress, Int64)
  96. public void Constructor2_Ifindex_OutOfRange ()
  97. {
  98. IPAddress group = IPAddress.Parse ("ff02::1");
  99. try {
  100. new IPv6MulticastOption (group, -1);
  101. Assert.Fail ("#A1");
  102. } catch (ArgumentOutOfRangeException ex) {
  103. // Specified argument was out of the range of valid values
  104. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
  105. Assert.IsNull (ex.InnerException, "#A3");
  106. Assert.IsNotNull (ex.Message, "#A4");
  107. Assert.AreEqual ("ifindex", ex.ParamName, "#A5");
  108. }
  109. try {
  110. new IPv6MulticastOption (group, 0x100000000);
  111. Assert.Fail ("#B1");
  112. } catch (ArgumentOutOfRangeException ex) {
  113. // Specified argument was out of the range of valid values
  114. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
  115. Assert.IsNull (ex.InnerException, "#B3");
  116. Assert.IsNotNull (ex.Message, "#B4");
  117. Assert.AreEqual ("ifindex", ex.ParamName, "#B5");
  118. }
  119. }
  120. [Test]
  121. public void Group ()
  122. {
  123. IPAddress group;
  124. IPv6MulticastOption option;
  125. group = IPAddress.Parse ("239.255.255.250");
  126. option = new IPv6MulticastOption (group, 5L);
  127. group = IPAddress.Parse ("224.0.0.23");
  128. option.Group = group;
  129. Assert.AreSame (group, option.Group, "#A1");
  130. Assert.AreEqual (5L, option.InterfaceIndex, "#A2");
  131. group = IPAddress.Parse ("239.255.255.250");
  132. option.Group = group;
  133. Assert.AreSame (group, option.Group, "#B1");
  134. Assert.AreEqual (5L, option.InterfaceIndex, "#B2");
  135. group = IPAddress.Parse ("ff02::1");
  136. option.Group = group;
  137. Assert.AreSame (group, option.Group, "#C1");
  138. Assert.AreEqual (5L, option.InterfaceIndex, "#C2");
  139. }
  140. [Test]
  141. public void Group_Value_Null ()
  142. {
  143. IPAddress group = IPAddress.Parse ("239.255.255.250");
  144. IPv6MulticastOption option = new IPv6MulticastOption (group, 10);
  145. try {
  146. option.Group = null;
  147. Assert.Fail ("#1");
  148. } catch (ArgumentNullException ex) {
  149. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  150. Assert.IsNull (ex.InnerException, "#3");
  151. Assert.IsNotNull (ex.Message, "#4");
  152. Assert.AreEqual ("value", ex.ParamName, "#5");
  153. }
  154. }
  155. [Test]
  156. public void InterfaceIndex ()
  157. {
  158. IPAddress group;
  159. IPv6MulticastOption option;
  160. group = IPAddress.Parse ("239.255.255.250");
  161. option = new IPv6MulticastOption (group, 10);
  162. option.InterfaceIndex = 0;
  163. Assert.AreSame (group, option.Group, "#A1");
  164. Assert.AreEqual (0, option.InterfaceIndex, "#A2");
  165. option.InterfaceIndex = 124;
  166. Assert.AreSame (group, option.Group, "#B1");
  167. Assert.AreEqual (124, option.InterfaceIndex, "#B2");
  168. option.InterfaceIndex = 0xFFFFFFFF;
  169. Assert.AreSame (group, option.Group, "#C1");
  170. Assert.AreEqual (0xFFFFFFFF, option.InterfaceIndex, "#C3");
  171. }
  172. [Test]
  173. public void InterfaceIndex_Value_OutOfRange ()
  174. {
  175. IPAddress group = IPAddress.Parse ("239.255.255.250");
  176. IPv6MulticastOption option = new IPv6MulticastOption (group, 10);
  177. try {
  178. option.InterfaceIndex = -1;
  179. Assert.Fail ("#A1");
  180. } catch (ArgumentOutOfRangeException ex) {
  181. // Specified argument was out of the range of valid values
  182. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
  183. Assert.IsNull (ex.InnerException, "#A3");
  184. Assert.IsNotNull (ex.Message, "#A4");
  185. Assert.AreEqual ("value", ex.ParamName, "#A5");
  186. }
  187. try {
  188. option.InterfaceIndex = 0x100000000;
  189. Assert.Fail ("#B1");
  190. } catch (ArgumentOutOfRangeException ex) {
  191. // Specified argument was out of the range of valid values
  192. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
  193. Assert.IsNull (ex.InnerException, "#B3");
  194. Assert.IsNotNull (ex.Message, "#B4");
  195. Assert.AreEqual ("value", ex.ParamName, "#B5");
  196. }
  197. // ensure original value was retained
  198. Assert.AreEqual (10, option.InterfaceIndex, "#C");
  199. }
  200. }
  201. }