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); }
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)); }