public void RoundToIntNotAtMidPoint(MidpointRoundingMode mode)
        {
            const int range   = 3;
            var       epsilon = new BigRational(1, 3);

            for (BigRational rational = -range; rational <= range; ++rational)
            {
                AssertEqual(rational, BigRational.RoundToInt(rational + epsilon, mode));
                AssertEqual(rational, BigRational.RoundToInt(rational - epsilon, mode));
            }
        }
        public void TestRoundToTickNotAtMidPoint(MidpointRoundingMode mode)
        {
            const int range   = 6;
            var       epsilon = new BigRational(1, 12);
            var       tick    = new BigRational(1, 3);
            var       max     = range * tick;
            var       min     = -range * tick;

            for (BigRational rational = min; rational <= max; rational += tick)
            {
                AssertEqual(rational, BigRational.RoundToTick(rational + epsilon, tick, mode));
                AssertEqual(rational, BigRational.RoundToTick(rational - epsilon, tick, mode));
                AssertEqual(rational, BigRational.RoundToTick(rational, tick, mode));
            }
        }
 public void TestRoundToTickAtMidPoint(string unrounded, string tick, MidpointRoundingMode mode, string expected)
 {
     AssertEqual(
         BigRational.RoundToTick(BigRational.Parse(unrounded), BigRational.Parse(tick), mode),
         BigRational.Parse(expected));
 }
 public void RoundToIntAtMidPoint(string rational, MidpointRoundingMode mode, int rounded)
 {
     Assert.AreEqual(
         BigRational.RoundToInt(BigRational.Parse(rational), mode),
         new BigInteger(rounded));
 }