Ejemplo n.º 1
0
    static void CopyBitsTest(ref UnsafeBitArray test, int dstPos, int srcPos, int numBits)
    {
        for (int pos = 0; pos < test.Length; pos += 64)
        {
            test.SetBits(pos, 0xaaaaaaaaaaaaaaaaul, 64);
        }

        test.SetBits(srcPos, true, numBits);
        test.Copy(dstPos, srcPos, numBits);
        Assert.AreEqual(true, test.TestAll(dstPos, numBits));

        for (int pos = 0; pos < test.Length; ++pos)
        {
            if ((pos >= dstPos && pos < dstPos + numBits) ||
                (pos >= srcPos && pos < srcPos + numBits))
            {
                Assert.AreEqual(true, test.IsSet(pos));
            }
            else
            {
                Assert.AreEqual((0 != (pos & 1)), test.IsSet(pos));
            }
        }

        test.Clear();
    }
Ejemplo n.º 2
0
    public void UnsafeBitArray_CopyBetweenBitArrays()
    {
        var numBits = 512;

        var test0 = new UnsafeBitArray(numBits, Allocator.Persistent, NativeArrayOptions.ClearMemory);
        var test1 = new UnsafeBitArray(numBits, Allocator.Persistent, NativeArrayOptions.ClearMemory);
        var test2 = new UnsafeBitArray(numBits, Allocator.Persistent, NativeArrayOptions.ClearMemory);

        for (int pos = 0; pos < test0.Length; pos += 64)
        {
            test0.SetBits(pos, 0xaaaaaaaaaaaaaaaaul, 64);
            test1.SetBits(pos, 0x5555555555555555ul, 64);
        }

        var numCopyBits = 255;

        test0.SetBits(13, true, numCopyBits);

        test1.Copy(1, ref test0, 13, numCopyBits);
        Assert.AreEqual(true, test1.TestAll(1, numCopyBits));

        test2.Copy(43, ref test1, 1, numCopyBits);
        Assert.AreEqual(true, test2.TestAll(43, numCopyBits));

        test0.Dispose();
        test1.Dispose();
        test2.Dispose();
    }
Ejemplo n.º 3
0
    static void CopyBitsTest(ref UnsafeBitArray dstBitArray, int dstPos, ref UnsafeBitArray srcBitArray, int srcPos, int numBits)
    {
        for (int pos = 0; pos < dstBitArray.Length; pos += 64)
        {
            dstBitArray.SetBits(pos, 0xaaaaaaaaaaaaaaaaul, 64);
        }

        srcBitArray.SetBits(srcPos, true, numBits);
        dstBitArray.Copy(dstPos, ref srcBitArray, srcPos, numBits);
        Assert.AreEqual(true, dstBitArray.TestAll(dstPos, numBits));

        for (int pos = 0; pos < dstBitArray.Length; ++pos)
        {
            if ((pos >= dstPos && pos < dstPos + numBits) ||
                (pos >= srcPos && pos < srcPos + numBits))
            {
                Assert.AreEqual(true, dstBitArray.IsSet(pos));
            }
            else
            {
                Assert.AreEqual((0 != (pos & 1)), dstBitArray.IsSet(pos));
            }
        }

        dstBitArray.Clear();
    }
Ejemplo n.º 4
0
 /// <summary>
 /// Copy block of bits from source to destination.
 /// </summary>
 /// <param name="dstPos">Destination position in bit array.</param>
 /// <param name="srcPos">Source position in bit array.</param>
 /// <param name="numBits">Number of bits to copy.</param>
 public void Copy(int dstPos, int srcPos, int numBits)
 {
     CheckWrite();
     m_BitArray.Copy(dstPos, srcPos, numBits);
 }