コード例 #1
0
        public void ClearBit(int size, int bit)
        {
            var mask = new LogLevelBitMask(size, true, false);

            // check the actual size of the mask in bits
            int effectiveSize = (size + 31) & ~31;

            Assert.Equal(effectiveSize, mask.Size);

            // clear bit
            mask.ClearBit(bit);

            // check underlying buffer
            uint[] maskArray            = mask.AsArray();
            int    clearedBitArrayIndex = bit / 32;
            int    clearedBitIndex      = bit % 32;

            uint[] expectedMaskArray = new uint[effectiveSize / 32];
            for (int i = 0; i < expectedMaskArray.Length; i++)
            {
                if (i == clearedBitArrayIndex)
                {
                    expectedMaskArray[i] = ~0u & ~(1u << clearedBitIndex);
                }
                else
                {
                    expectedMaskArray[i] = ~0u;
                }
            }

            Assert.Equal(expectedMaskArray, maskArray);
        }
コード例 #2
0
        public void IsBitCleared(int size, int bit)
        {
            var mask = new LogLevelBitMask(size, true, false);

            Assert.False(mask.IsBitCleared(bit));
            mask.ClearBit(bit);
            Assert.True(mask.IsBitCleared(bit));
        }