コード例 #1
0
        public void SimplifiedInstances()
        {
            var simple = new Rational(1, 2);

            foreach (var prime in _primes)
            {
                var complex      = new Rational(prime, 2 * prime);
                var actualSimple = complex.GetSimplifiedInstance();

                Assert.True(simple.EqualsExact(actualSimple), $"Complex {complex}, Expected simple {simple}, Actual simple {actualSimple}");
                Assert.Equal(actualSimple.ToDecimal(), complex.ToDecimal());
            }

            simple = new Rational(2, 1);

            foreach (var prime in _primes)
            {
                var complex      = new Rational(2 * prime, prime);
                var actualSimple = complex.GetSimplifiedInstance();

                Assert.True(simple.EqualsExact(actualSimple), $"Complex {complex}, Expected simple {simple}, Actual simple {actualSimple}");
                Assert.Equal(actualSimple.ToDecimal(), complex.ToDecimal());
            }

            simple = new Rational(-1, 2);

            foreach (var prime in _primes)
            {
                var complex      = new Rational(-prime, 2 * prime);
                var actualSimple = complex.GetSimplifiedInstance();

                Assert.True(simple.EqualsExact(actualSimple), $"Complex {complex}, Expected simple {simple}, Actual simple {actualSimple}");
                Assert.Equal(actualSimple.ToDecimal(), complex.ToDecimal());
            }

            simple = new Rational(1, -2);

            foreach (var prime in _primes)
            {
                var complex      = new Rational(prime, -2 * prime);
                var actualSimple = complex.GetSimplifiedInstance();

                Assert.True(simple.EqualsExact(actualSimple), $"Complex {complex}, Expected simple {simple}, Actual simple {actualSimple}");
                Assert.Equal(actualSimple.ToDecimal(), complex.ToDecimal());
            }

            simple = new Rational(-1, -2);

            foreach (var prime in _primes)
            {
                var complex      = new Rational(-prime, -2 * prime);
                var actualSimple = complex.GetSimplifiedInstance();

                Assert.True(simple.EqualsExact(actualSimple), $"Complex {complex}, Expected simple {simple}, Actual simple {actualSimple}");
                Assert.Equal(actualSimple.ToDecimal(), complex.ToDecimal());
            }

            Assert.Equal(new Rational(-32768, 65535), new Rational(-32768, 65535).GetSimplifiedInstance());
            Assert.Equal(new Rational(-32768, 32767), new Rational(-32768, 32767).GetSimplifiedInstance());
        }