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/integer/IntegerPropertiesTest.lvt

namespace Eccelerators.BitTwiddling.Tests.Integer

using Eccelerators.BitTwiddling.Integer

@Test
component IntegerPropertiesTest
{
    @Test
    fn TestSignsAndMagnitude()
    {
        assert IntegerProperties.SignMask(123) == 0
        assert IntegerProperties.SignMask(-123) == -1
        assert IntegerProperties.HaveOppositeSigns(-1, 1) == true
        assert IntegerProperties.HaveOppositeSigns(-1, -2) == false
        assert IntegerProperties.AbsoluteValueBits(123) == (123 as uint)
        assert IntegerProperties.AbsoluteValueBits(-123) == (123 as uint)
        assert IntegerProperties.AbsoluteValueBits(-2147483648) == (0x80000000 as uint)
    }

    @Test
    fn TestMinimumAndMaximum()
    {
        assert IntegerProperties.Minimum(-4, 9) == -4
        assert IntegerProperties.Minimum(7, 7) == 7
        assert IntegerProperties.Maximum(-4, 9) == 9
        assert IntegerProperties.Maximum(7, 7) == 7
    }

    @Test
    fn TestPowersOfTwo()
    {
        assert IntegerProperties.IsPowerOfTwo(0 as uint) == false
        assert IntegerProperties.IsPowerOfTwo(1 as uint) == true
        assert IntegerProperties.IsPowerOfTwo(1024 as uint) == true
        assert IntegerProperties.IsPowerOfTwo(1023 as uint) == false
        assert IntegerProperties.IsPowerOfTwo(0x80000000) == true

        assert IntegerProperties.RoundUpToPowerOfTwo(0 as uint) == (1 as uint)
        assert IntegerProperties.RoundUpToPowerOfTwo(1 as uint) == (1 as uint)
        assert IntegerProperties.RoundUpToPowerOfTwo(5 as uint) == (8 as uint)
        assert IntegerProperties.RoundUpToPowerOfTwo(0x80000000) == (0x80000000 as uint)
        assert IntegerProperties.RoundUpToPowerOfTwo(0x80000001) == (0 as uint)
    }

    @Test
    fn TestSignExtension()
    {
        assert IntegerProperties.SignExtend(0x0D as uint, 4) == -3
        assert IntegerProperties.SignExtend(0x05 as uint, 4) == 5
        assert IntegerProperties.SignExtend(0xFF, 8) == -1
        assert IntegerProperties.SignExtend(0x80000000, 32) == -2147483648
        assert IntegerProperties.SignExtend(1 as uint, 0) == 0
        assert IntegerProperties.SignExtend(1 as uint, 33) == 0
    }
}