Livt packages
Eccelerators.BitTwiddling
Version 0.1.1
Readable 32-bit bit manipulation, counting, scanning, permutation, and arithmetic utilities for Livt.
Published files (26)
tests/masks/BitMasksTest.lvt
namespace Eccelerators.BitTwiddling.Tests.Masks
using Eccelerators.BitTwiddling.Masks
@Test
component BitMasksTest
{
@Test
fn TestMergeAndConditionalMask()
{
assert BitMasks.IsAnySet(0x10, 0x18) == true
assert BitMasks.IsAnySet(0x10, 0x03) == false
assert BitMasks.AreAllSet(0x1F, 0x0F) == true
assert BitMasks.AreAllSet(0x17, 0x0F) == false
assert BitMasks.Set(0x10, 0x03) == (0x13 as uint)
assert BitMasks.Clear(0x13, 0x03) == (0x10 as uint)
assert BitMasks.Toggle(0x15, 0x0F) == (0x1A as uint)
assert BitMasks.Merge(0xAAAA0000, 0x00005555, 0x00FF00FF) == (0xAA000055 as uint)
assert BitMasks.SetOrClear(0x10, 0x03, true) == (0x13 as uint)
assert BitMasks.SetOrClear(0x13, 0x03, false) == (0x10 as uint)
}
@Test
fn TestExtractAndInsert()
{
assert BitMasks.Extract(0x1234ABCD, 8, 8) == (0xAB as uint)
assert BitMasks.Extract(0x1234ABCD, 0, 32) == (0x1234ABCD as uint)
assert BitMasks.Extract(0x1234ABCD, 30, 4) == (0 as uint)
assert BitMasks.Insert(0x12340078, 0xAB, 8, 8) == (0x1234AB78 as uint)
assert BitMasks.Insert(0x12345678, 0xFFFFFFFF, 0, 32) == (0xFFFFFFFF as uint)
assert BitMasks.Insert(0x12345678, 0, -1, 8) == (0x12345678 as uint)
}
}