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 RoundToTickWithTickError()
 {
     Assert.Throws <ArgumentException>(() => BigRational.RoundToTick(1, new BigRational(-1, 2), default));
 }
 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 RoundToTickWithModeError()
 {
     Assert.Throws <ArgumentException>(() =>
                                       BigRational.RoundToTick(1, new BigRational(1, 2), (MidpointRoundingMode)100));
 }