public void CorrectlyDivides(uint divisor, uint testDividend)
        {
            var uInt32Divisor = new UInt32Divisor(divisor);
            var quotient      = testDividend / uInt32Divisor;

            Assert.AreEqual(testDividend / divisor, quotient);
        }
        public void CalculatesModulusCorrectly(uint divisor, uint testDividend)
        {
            var uInt32Divisor = new UInt32Divisor(divisor);
            var remainder     = testDividend % uInt32Divisor;

            Assert.AreEqual(testDividend % divisor, remainder);
        }
        public void CalculatesFloorCorrectly(uint divisor, uint testDividend)
        {
            var uInt32Divisor = new UInt32Divisor(divisor);
            var rounded       = uInt32Divisor.Floor(testDividend);

            Assert.AreEqual(testDividend / divisor * divisor, rounded);
        }
Exemple #4
0
        public DelegateDispatchedUInt32Divisor(uint divisor) : this()
        {
            Divisor = divisor;
            var w = new UInt32Divisor(divisor);

            Multiplier = w.Multiplier;
            Strategy   = w.Strategy;
            Shift      = w.Shift;
            switch (Strategy)
            {
            case UnsignedIntegerDivisorStrategy.Shift:
                DivideFunc = ShiftOnly;
                break;

            case UnsignedIntegerDivisorStrategy.MultiplyShift:
                DivideFunc = Multiply;
                break;

            case UnsignedIntegerDivisorStrategy.MultiplyAddShift:
                DivideFunc = MultiplyAdd;
                break;

            default:
                DivideFunc = Echo;
                break;
            }
        }
 public void Setup()
 {
     rng = new PcgRandom();
     Console.WriteLine($"Setup with value {ValueToDivideBy}");
     divisorBranching = new UInt32Divisor(ValueToDivideBy);
     divisorOld       = new OldDivisor(ValueToDivideBy);
 }
        public void DivRemReturnsCorrectly(uint divisor, uint testDividend)
        {
            var uInt32Divisor = new UInt32Divisor(divisor);
            var remainder     = uInt32Divisor.DivRem(testDividend, out var quotient);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(testDividend % divisor, remainder);
                Assert.AreEqual(testDividend / divisor, quotient);
            });
        }
        public void CalculatesFloorRemCorrectly(uint divisor, uint testDividend)
        {
            var uInt32Divisor = new UInt32Divisor(divisor);
            var remainder     = uInt32Divisor.FloorRem(testDividend, out var rounded);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(testDividend % divisor, remainder);
                Assert.AreEqual(testDividend / divisor * divisor, rounded);
            });
        }
        public void CalculatesFloorCorrectlyRandomNumerators(uint divisor)
        {
            var uInt32Divisor = new UInt32Divisor(divisor);
            var rng           = new PcgRandom();

            for (ulong i = 0; i < RandomTestCount; i++)
            {
                var testDividend = rng.Next();
                var rounded      = uInt32Divisor.Floor(testDividend);
                Assert.AreEqual(testDividend / divisor * divisor, rounded, $"Trying to test {testDividend} / {divisor} * {divisor}");
            }
        }
        public void CalculatesModulusCorrectlyRandomNumerators(uint divisor)
        {
            var uInt32Divisor = new UInt32Divisor(divisor);
            var rng           = new PcgRandom();

            for (ulong i = 0; i < RandomTestCount; i++)
            {
                var testDividend = rng.Next();
                var remainder    = testDividend % uInt32Divisor;
                Assert.AreEqual(testDividend % divisor, remainder, $"Trying to test {testDividend} % {divisor}");
            }
        }
        public void CorrectlyDividesRandomNumerators(uint divisor)
        {
            var uInt32Divisor = new UInt32Divisor(divisor);
            var rng           = new PcgRandom();

            for (ulong i = 0; i < RandomTestCount; i++)
            {
                var testDividend = rng.Next();
                var quotient     = testDividend / uInt32Divisor;
                Assert.AreEqual(testDividend / divisor, quotient, $"Trying to test {testDividend} / {divisor}");
            }
        }
        public void DivRemReturnsCorrectlyRandomNumerators(uint divisor)
        {
            var uInt32Divisor = new UInt32Divisor(divisor);
            var rng           = new PcgRandom();

            for (ulong i = 0; i < RandomTestCount; i++)
            {
                var testDividend = rng.Next();
                var remainder    = uInt32Divisor.DivRem(testDividend, out var quotient);
                Assert.AreEqual(testDividend % divisor, remainder, $"Trying to test {testDividend} % {divisor}");
                Assert.AreEqual(testDividend / divisor, quotient, $"Trying to test {testDividend} / {divisor}");
            }
        }
 public UInt32Divisor UInt32Divisor() => u32D = new UInt32Divisor(Divisor());