public void TestEwahCompressedBitArray() { Console.WriteLine("testing EWAH (basic)"); const long zero = 0; const long specialval = 1L | (1L << 4) | (1L << 63); const long notzero = ~zero; var myarray1 = new EwahCompressedBitArray { zero, zero, zero, specialval, specialval, notzero, zero }; Assert.AreEqual(myarray1.GetPositions().Count, 6 + 64); var myarray2 = new EwahCompressedBitArray(); myarray2.Add(zero); myarray2.Add(specialval); myarray2.Add(specialval); myarray2.Add(notzero); myarray2.Add(zero); myarray2.Add(zero); myarray2.Add(zero); Assert.AreEqual(myarray2.GetPositions().Count, 6 + 64); List <int> data1 = myarray1.GetPositions(); List <int> data2 = myarray2.GetPositions(); var logicalor = new List <int>(); { var tmp = new HashSet <int>(); tmp.AddRange(data1); tmp.AddRange(data2); logicalor.AddRange(tmp); } logicalor.Sort(); var logicaland = new List <int>(); logicaland.AddRange(data1); logicaland.Retain(data2); logicaland.Sort(); EwahCompressedBitArray arrayand = myarray1.And(myarray2); AreEqual(arrayand.GetPositions(), logicaland); EwahCompressedBitArray arrayor = myarray1.Or(myarray2); AreEqual(arrayor.GetPositions(), logicalor); EwahCompressedBitArray arrayandbis = myarray2.And(myarray1); AreEqual(arrayandbis.GetPositions(), logicaland); EwahCompressedBitArray arrayorbis = myarray2.Or(myarray1); AreEqual(arrayorbis.GetPositions(), logicalor); var x = new EwahCompressedBitArray(); foreach (int i in myarray1.GetPositions()) { x.Set(i); } AreEqual(x.GetPositions(), myarray1.GetPositions()); x = new EwahCompressedBitArray(); foreach (int i in myarray2.GetPositions()) { x.Set(i); } AreEqual(x.GetPositions(), myarray2.GetPositions()); x = new EwahCompressedBitArray(); foreach (int pos in myarray1) { x.Set(pos); } AreEqual(x.GetPositions(), myarray1.GetPositions()); x = new EwahCompressedBitArray(); foreach (int pos in myarray2) { x.Set(pos); } AreEqual(x.GetPositions(), myarray2.GetPositions()); Console.WriteLine("testing EWAH (basic):ok"); }