IPAddressTest.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. //
  2. // IPAddressTest.cs - NUnit Test Cases for System.Net.IPAddress
  3. //
  4. // Author:
  5. // Gonzalo Paniagua Javier ([email protected])
  6. //
  7. // (C) Ximian, Inc. http://www.ximian.com
  8. //
  9. using NUnit.Framework;
  10. using System;
  11. using System.Net;
  12. using System.Runtime.InteropServices;
  13. namespace MonoTests.System.Net
  14. {
  15. public class IPAddressTest : TestCase
  16. {
  17. public IPAddressTest () :
  18. base ("[MonoTests.System.Net.IPAddressTest]") {}
  19. public IPAddressTest (string name) : base (name) {}
  20. protected override void SetUp () {}
  21. protected override void TearDown() {}
  22. public static ITest Suite {
  23. get {
  24. return new TestSuite(typeof(IPAddressTest));
  25. }
  26. }
  27. public void TestPublicFields ()
  28. {
  29. AssertEquals ("Any", IPAddress.Any.Address, (long) 0);
  30. AssertEquals ("Broadcast", IPAddress.Broadcast.Address, (long) 0xFFFFFFFF);
  31. long loopback = IPAddress.HostToNetworkOrder (BitConverter.IsLittleEndian ?
  32. 0x7f000001 :
  33. 0x0100007f);
  34. AssertEquals ("Loopback", IPAddress.Loopback.Address, loopback);
  35. AssertEquals ("None", IPAddress.None.Address, (long) 0xFFFFFFFF);
  36. }
  37. public void TestToString ()
  38. {
  39. IPAddress ip = IPAddress.Parse ("192.168.1.1");
  40. AssertEquals ("ToString #1", "192.168.1.1", ip.ToString ());
  41. AssertEquals ("ToString #2", "0.0.0.0", IPAddress.Any.ToString ());
  42. AssertEquals ("ToString #3", "255.255.255.255", IPAddress.Broadcast.ToString ());
  43. AssertEquals ("ToString #4", "127.0.0.1", IPAddress.Loopback.ToString ());
  44. AssertEquals ("ToString #5", "255.255.255.255", IPAddress.None.ToString ());
  45. }
  46. public void TestIsLoopback ()
  47. {
  48. IPAddress ip = IPAddress.Parse ("127.0.0.1");
  49. AssertEquals ("IsLoopback #1", true, IPAddress.IsLoopback (ip));
  50. }
  51. public void TestAddress ()
  52. {
  53. // hm, lame, anything is accepted by ms.net
  54. /*
  55. try {
  56. IPAddress ip1 = new IPAddress (0x0000000100000000);
  57. Fail ("#1");
  58. } catch (ArgumentOutOfRangeException) {}
  59. IPAddress ip = IPAddress.Parse ("127.0.0.1");
  60. ip.Address = 0;
  61. ip.Address = 0xffffffff;
  62. try {
  63. ip.Address = -1;
  64. Fail ("#2");
  65. } catch (ArgumentOutOfRangeException) {}
  66. try {
  67. ip.Address = 0x0000000100000000;
  68. Fail ("#3");
  69. } catch (ArgumentOutOfRangeException) {}
  70. */
  71. }
  72. public void TestParseOk ()
  73. {
  74. IPAddress ip = IPAddress.Parse ("192.168.1.1");
  75. Assert ("Parse #1", ip.ToString () == "192.168.1.1");
  76. ip = IPAddress.Parse ("0xff.0x7f.0x20.0x01");
  77. Assert ("Parse #1b", ip.ToString () == "255.127.32.1");
  78. ip = IPAddress.Parse ("0xff.0x7f.0x20.0xf");
  79. Assert ("Parse #1c", ip.ToString () == "255.127.32.15");
  80. ip = IPAddress.Parse ("0.0.0.0");
  81. AssertEquals ("Parse #2", ip, IPAddress.Any);
  82. ip = IPAddress.Parse ("255.255.255.255");
  83. AssertEquals ("Parse #3", ip, IPAddress.Broadcast);
  84. AssertEquals ("Parse #4", ip, IPAddress.None);
  85. ip = IPAddress.Parse ("127.0.0.1");
  86. AssertEquals ("Parse #5", IPAddress.IsLoopback (ip), true);
  87. ip = IPAddress.Parse ("12.1.1.3 ");
  88. AssertEquals ("Parse #6", IPAddress.Parse ("12.1.1.3"), ip);
  89. ip = IPAddress.Parse (" 12.1.1.1");
  90. AssertEquals ("Parse #7", IPAddress.Parse ("0.0.0.0"), ip);
  91. ip = IPAddress.Parse ("12.1 .1.2");
  92. AssertEquals ("Parse #8", IPAddress.Parse ("12.0.0.1"), ip);
  93. ip = IPAddress.Parse (".1.1.6");
  94. AssertEquals ("Parse #9", IPAddress.Parse ("0.1.1.6"), ip);
  95. ip = IPAddress.Parse ("12.1.7");
  96. AssertEquals ("Parse #10", IPAddress.Parse ("12.1.0.7"), ip);
  97. ip = IPAddress.Parse ("12.1.8. ");
  98. AssertEquals ("Parse #11", IPAddress.Parse ("12.1.8.0"), ip);
  99. ip = IPAddress.Parse ("12");
  100. AssertEquals ("Parse #12", IPAddress.Parse ("0.0.0.12"), ip);
  101. ip = IPAddress.Parse ("12.1 foo.1.2.3.4.5.bar");
  102. AssertEquals ("Parse #13", IPAddress.Parse ("12.0.0.1"), ip);
  103. ip = IPAddress.Parse ("12.1.2. ");
  104. AssertEquals ("Parse #14", IPAddress.Parse ("12.1.2.0"), ip);
  105. ip = IPAddress.Parse ("12.. .");
  106. AssertEquals ("Parse #15", IPAddress.Parse ("12.0.0.0"), ip);
  107. ip = IPAddress.Parse (" ");
  108. AssertEquals ("Parse #16", IPAddress.Parse ("0.0.0.0"), ip);
  109. ip = IPAddress.Parse (" foo");
  110. AssertEquals ("Parse #17", IPAddress.Parse ("0.0.0.0"), ip);
  111. }
  112. public void TestParseWrong ()
  113. {
  114. IPAddress ip = IPAddress.None;
  115. try {
  116. ip = IPAddress.Parse ("12.+1.1.4");
  117. Fail("Should raise a FormatException #1");
  118. } catch (FormatException) {
  119. } catch (Exception e) {
  120. Fail ("ParseWrong #1:" + e.ToString());
  121. }
  122. try {
  123. ip = IPAddress.Parse ("12.1.-1.5");
  124. Fail("Should raise a FormatException #2");
  125. } catch (FormatException) {
  126. } catch (Exception e) {
  127. Fail ("ParseWrong #2:" + e.ToString());
  128. }
  129. try {
  130. ip = IPAddress.Parse ("257.1.1.9");
  131. Fail("Should raise a FormatException #3");
  132. } catch (FormatException) {
  133. } catch (Exception e) {
  134. Fail ("ParseWrong #3:" + e.ToString());
  135. }
  136. try {
  137. ip = IPAddress.Parse (null);
  138. Fail("Should raise a ArgumentNullException #1");
  139. } catch (ArgumentNullException) {
  140. } catch (Exception e) {
  141. Fail ("ParseWrong #4:" + e.ToString());
  142. }
  143. try {
  144. ip = IPAddress.Parse ("12.");
  145. Fail ("ParseWrong #5: Should raise a FormatException");
  146. } catch (FormatException) {}
  147. try {
  148. ip = IPAddress.Parse ("12.1.2.");
  149. Fail ("ParseWrong #6: Should raise a FormatException");
  150. } catch (FormatException) {}
  151. try {
  152. ip = IPAddress.Parse ("12...");
  153. Fail ("ParseWrong #7: Should raise a FormatException");
  154. } catch (FormatException) {}
  155. }
  156. public void TestNetworkHost ()
  157. {
  158. long [] tested = new long [] { 0, 1, 1, 1};
  159. long [] expectedLE = new long [] {0, 256, 16777216, 72057594037927936 };
  160. long [] expected;
  161. expected = BitConverter.IsLittleEndian ? expectedLE : tested;
  162. short short0 = IPAddress.NetworkToHostOrder ((short) tested [0]);
  163. AssertEquals ("NetworkToHostOrder #1", short0, (short) expected [0]);
  164. short0 = IPAddress.HostToNetworkOrder (short0);
  165. AssertEquals ("HostToNetworkOrder #1", short0, (short) tested [0]);
  166. int int0 = IPAddress.NetworkToHostOrder ((int) tested [0]);
  167. AssertEquals ("NetworkToHostOrder #2", int0, (int) expected [0]);
  168. int0 = IPAddress.HostToNetworkOrder (int0);
  169. AssertEquals ("HostToNetworkOrder #2", int0, (int) tested [0]);
  170. long long0 = IPAddress.NetworkToHostOrder (tested [0]);
  171. AssertEquals ("NetworkToHostOrder #3", long0, expected [0]);
  172. long0 = IPAddress.HostToNetworkOrder (long0);
  173. AssertEquals ("HostToNetworkOrder #3", long0, tested [0]);
  174. short0 = IPAddress.NetworkToHostOrder ((short) tested [1]);
  175. AssertEquals ("NetworkToHostOrder #4", short0, (short) expected [1]);
  176. short0 = IPAddress.HostToNetworkOrder (short0);
  177. AssertEquals ("HostToNetworkOrder #4", short0, (short) tested [1]);
  178. int0 = IPAddress.NetworkToHostOrder ((int) tested [2]);
  179. AssertEquals ("NetworkToHostOrder #5", int0, (int) expected [2]);
  180. int0 = IPAddress.HostToNetworkOrder (int0);
  181. AssertEquals ("HostToNetworkOrder #5", int0, (int) tested [2]);
  182. long0 = IPAddress.NetworkToHostOrder (tested [3]);
  183. AssertEquals ("NetworkToHostOrder #6", long0, expected [3]);
  184. long0 = IPAddress.HostToNetworkOrder (long0);
  185. AssertEquals ("HostToNetworkOrder #6", long0, tested [3]);
  186. }
  187. }
  188. }