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/arithmetic/SaturatingArithmeticTest.lvt

namespace Eccelerators.BitTwiddling.Tests.Arithmetic

using Eccelerators.BitTwiddling.Arithmetic

@Test
component SaturatingArithmeticTest
{
    @Test
    fn TestSaturation()
    {
        assert SaturatingArithmetic.AddUnsigned(10, 20) == (30 as uint)
        assert SaturatingArithmetic.AddUnsigned(0xFFFFFFFF, 1) == (0xFFFFFFFF as uint)
        assert SaturatingArithmetic.SubtractUnsigned(20, 10) == (10 as uint)
        assert SaturatingArithmetic.SubtractUnsigned(10, 20) == (0 as uint)
    }

    @Test
    fn TestCarryAndBorrow()
    {
        assert SaturatingArithmetic.AddWrapping(0xFFFFFFFF, 1) == (0 as uint)
        assert SaturatingArithmetic.HasAdditionCarry(0xFFFFFFFF, 1) == true
        assert SaturatingArithmetic.HasAdditionCarry(10, 20) == false
        assert SaturatingArithmetic.SubtractWrapping(0, 1) == (0xFFFFFFFF as uint)
        assert SaturatingArithmetic.HasSubtractionBorrow(0, 1) == true
        assert SaturatingArithmetic.HasSubtractionBorrow(20, 10) == false
    }
}