BitVector32Test.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. //
  2. // BitVector32Test.cs - NUnit Test Cases for System.Net.BitVector32
  3. //
  4. // Authors:
  5. // Lawrence Pit ([email protected])
  6. // Martin Willemoes Hansen ([email protected])
  7. //
  8. // (C) 2003 Martin Willemoes Hansen
  9. //
  10. using NUnit.Framework;
  11. using System;
  12. using System.Collections;
  13. using System.Collections.Specialized;
  14. namespace MonoTests.System.Collections.Specialized
  15. {
  16. [TestFixture]
  17. public class BitVector32Test
  18. {
  19. [Test]
  20. public void Constructors ()
  21. {
  22. BitVector32 b = new BitVector32 (31);
  23. }
  24. [Test]
  25. public void Indexers ()
  26. {
  27. BitVector32 b = new BitVector32 (7);
  28. Assertion.Assert ("#1", b [0]);
  29. Assertion.Assert ("#2", b [1]);
  30. Assertion.Assert ("#3", b [2]);
  31. Assertion.Assert ("#4", b [4]);
  32. Assertion.Assert ("#5", !b [8]);
  33. Assertion.Assert ("#6", !b [16]);
  34. b [8] = true;
  35. Assertion.Assert ("#7", b [4]);
  36. Assertion.Assert ("#8", b [8]);
  37. Assertion.Assert ("#9", !b [16]);
  38. b [8] = false;
  39. Assertion.Assert ("#10", b [4]);
  40. Assertion.Assert ("#11", !b [8]);
  41. Assertion.Assert ("#12", !b [16]);
  42. BitVector32.Section s = BitVector32.CreateSection (31);
  43. s = BitVector32.CreateSection (64, s);
  44. // Print (s);
  45. // b = new BitVector32 (0x777777);
  46. BitVector32 b1 = new BitVector32 (0xffff77);
  47. BitVector32 b2 = new BitVector32 (b1 [s]);
  48. //Console.WriteLine (b1.ToString ());
  49. //Console.WriteLine (b2.ToString ());
  50. Assertion.AssertEquals ("#14", 123, b1 [s]);
  51. // b1 [s] = 15;
  52. //Console.WriteLine (b1.ToString ());
  53. }
  54. [Test]
  55. public void CreateMask ()
  56. {
  57. Assertion.AssertEquals ("#1", 1, BitVector32.CreateMask ());
  58. Assertion.AssertEquals ("#2", 1, BitVector32.CreateMask (0));
  59. Assertion.AssertEquals ("#3", 2, BitVector32.CreateMask (1));
  60. Assertion.AssertEquals ("#4", 32, BitVector32.CreateMask (16));
  61. Assertion.AssertEquals ("#6", -2, BitVector32.CreateMask (Int32.MaxValue));
  62. Assertion.AssertEquals ("#5", -4, BitVector32.CreateMask (-2));
  63. try {
  64. BitVector32.CreateMask (Int32.MinValue);
  65. Assertion.Fail ("#7");
  66. } catch (InvalidOperationException) {}
  67. }
  68. [Test]
  69. public void CreateSection ()
  70. {
  71. BitVector32.Section s = BitVector32.CreateSection (1);
  72. Assertion.AssertEquals ("#1", (short) 1, s.Mask);
  73. s = BitVector32.CreateSection (2);
  74. Assertion.AssertEquals ("#2", (short) 3, s.Mask);
  75. s = BitVector32.CreateSection (3);
  76. Assertion.AssertEquals ("#3", (short) 3, s.Mask);
  77. s = BitVector32.CreateSection (5);
  78. Assertion.AssertEquals ("#4", (short) 7, s.Mask);
  79. s = BitVector32.CreateSection (20);
  80. Assertion.AssertEquals ("#4", (short) 0x1f, s.Mask);
  81. s = BitVector32.CreateSection (Int16.MaxValue);
  82. Assertion.AssertEquals ("#5", (short) 0x7fff, s.Mask);
  83. s = BitVector32.CreateSection (Int16.MaxValue - 100);
  84. Assertion.AssertEquals ("#6", (short) 0x7fff, s.Mask);
  85. try {
  86. BitVector32.Section s2 = BitVector32.CreateSection (0);
  87. Assertion.Fail ("#7");
  88. } catch (ArgumentException) {}
  89. try {
  90. BitVector32.Section s2 = BitVector32.CreateSection (-1);
  91. Assertion.Fail ("#8");
  92. } catch (ArgumentException) {}
  93. try {
  94. BitVector32.Section s2 = BitVector32.CreateSection (Int16.MinValue);
  95. Assertion.Fail ("#9");
  96. } catch (ArgumentException) {}
  97. s = BitVector32.CreateSection (20);
  98. Assertion.AssertEquals ("#10a", (short) 0x1f, s.Mask);
  99. Assertion.AssertEquals ("#10b", (short) 0x00, s.Offset);
  100. s = BitVector32.CreateSection (120, s);
  101. Assertion.AssertEquals ("#10c", (short) 0x7f, s.Mask);
  102. Assertion.AssertEquals ("#10d", (short) 0x05, s.Offset);
  103. s = BitVector32.CreateSection (1000, s);
  104. Assertion.AssertEquals ("#10e", (short) 0x3ff, s.Mask);
  105. Assertion.AssertEquals ("#10f", (short) 0x0c, s.Offset);
  106. }
  107. [Test]
  108. public void TestNegativeIndexer ()
  109. {
  110. BitVector32 bv = new BitVector32 (-1);
  111. Assertion.AssertEquals ("#11a", false, bv [Int32.MinValue]);
  112. }
  113. [Test]
  114. public void TestSectionIndexer ()
  115. {
  116. BitVector32 bv = new BitVector32 (-1);
  117. BitVector32.Section sect = BitVector32.CreateSection (1);
  118. sect = BitVector32.CreateSection (Int16.MaxValue, sect);
  119. sect = BitVector32.CreateSection (Int16.MaxValue, sect);
  120. sect = BitVector32.CreateSection (1, sect);
  121. bv [sect] = 0;
  122. Assertion.AssertEquals ("#12a", Int32.MaxValue, bv.Data);
  123. }
  124. [Test, ExpectedException (typeof (ArgumentException))]
  125. public void TestCreateSection1 ()
  126. {
  127. BitVector32.Section section = BitVector32.CreateSection (Int16.MaxValue);
  128. section = BitVector32.CreateSection (0, section);
  129. }
  130. [Test, ExpectedException (typeof (ArgumentException))]
  131. public void TestCreateSection2 ()
  132. {
  133. BitVector32.Section section = BitVector32.CreateSection (Int16.MaxValue);
  134. section = BitVector32.CreateSection (-1, section);
  135. }
  136. [Test, ExpectedException (typeof (ArgumentException))]
  137. public void TestCreateSection3 ()
  138. {
  139. BitVector32.Section section = BitVector32.CreateSection (Int16.MaxValue);
  140. section = BitVector32.CreateSection (Int16.MinValue, section);
  141. }
  142. private void Print (BitVector32.Section s)
  143. {
  144. Console.WriteLine (s.ToString () + " : "+ s.Mask + " : " + s.Offset);
  145. }
  146. }
  147. }