示例#1
0
        public void konstruktorDwuArgumentowy_Poprawnie(int l, int m, int ExpectedNumerator, int ExpectedDominator)
        {
            Rational32 u = new Rational32(l, m);

            Assert.AreEqual(ExpectedNumerator, u.Numerator);
            Assert.AreEqual(ExpectedDominator, u.Denominator);
        }
示例#2
0
        public void GetHashCodeTest()
        {
            Rational32 a = new Rational32(42, 666);
            Rational32 b = new Rational32(42, 666);

            Assert.Equal(a.GetHashCode(), b.GetHashCode());
        }
示例#3
0
 public static Dynamic Simplify(Rational32 rational)
 {
     rational = rational.Simplify();
     return(rational.Denominator == 1
          ? new Integer(rational.Numerator)
          : (Dynamic) new Rational(rational));
 }
示例#4
0
        public void floating_point_conversion()
        {
            double sum   = 0.0;
            double upper = 0.0;
            double lower = 2.0;

            for (int i = 0; i < fuzzcount; i++)
            {
                var original = (float)((rnd.NextDouble() - 0.5) * rnd.Next(1, Rational32.MaxInt / 8));
                var subject  = Rational32.FromFloat(original);
                var result   = subject.ToFloat();

                // we can only approximate the exact float value
                var scale = original / result;
                sum += scale;

                upper = Math.Max(scale, upper);
                lower = Math.Min(scale, lower);

                Assert.That(scale, Is.LessThan(1.3), $"Original = {original}; Result = {result}; Scale = {scale}; (attempt {i})");
                Assert.That(scale, Is.GreaterThan(0.7), $"Original = {original}; Result = {result}; Scale = {scale}; (attempt {i})");
            }

            Console.WriteLine($"Average = {sum/fuzzcount}; Upper = {upper}; Lower = {lower};");
        }
示例#5
0
        public void ToStringTest()
        {
            Rational32 target   = new Rational32(42, 666);
            string     expected = "42/666";
            string     actual   = target.ToString();

            Assert.Equal(expected, actual);
        }
示例#6
0
        public void can_convert_an_integer_into_a_rational_into_a_float()
        {
            var subject = Rational32.FromInt(1234);

            var result = subject.ToFloat();

            Assert.That(result, Is.EqualTo(1234));
        }
示例#7
0
        public void KonstruktorDwuArgumentowy_Poprawnie(int numerator, int denominator, int expectedNumerator, int expectedDenominator)
        {
            //AAA
            Rational32 u = new Rational32(numerator, denominator);

            Assert.AreEqual(expectedNumerator, u.Numerator);
            Assert.AreEqual(expectedDenominator, u.Denominator);
        }
示例#8
0
        static void Main(string[] args)
        {
            Rational32 u = new Rational32(1, 2);
            var        w = new Rational32(0, 0);

            Console.WriteLine(u);
            Console.WriteLine(w);
        }
示例#9
0
        public void Rational32ConstructorTest1()
        {
            int        numerator   = 0;
            int        denominator = 0;
            Rational32 target      = new Rational32(numerator, denominator);

            Assert.Equal(numerator, target.Numerator);
            Assert.Equal(denominator, target.Denominator);
        }
示例#10
0
        public void ReduceTest2()
        {
            Rational32 target   = new Rational32(9, 25);
            Rational32 expected = new Rational32(9, 25);
            Rational32 actual;

            actual = target.Reduce();
            Assert.Equal(expected, actual);
        }
示例#11
0
        public void ReduceTest()
        {
            Rational32 target   = new Rational32(1207959552, 16777216);
            Rational32 expected = new Rational32(72, 1);
            Rational32 actual;

            actual = target.Reduce();
            Assert.Equal(expected, actual);
        }
示例#12
0
        public void converting_an_negative_oversize_int_results_in_saturation()
        {
            var max     = (1 << 26) - 1;
            var subject = Rational32.FromInt(-123456789);

            var result = subject.ToFloat();

            Assert.That(result, Is.EqualTo(-max));
        }
示例#13
0
        public void can_convert_a_large_integer_into_a_rational_into_a_float()
        {
            var max     = (1 << 26) - 1;
            var subject = Rational32.FromInt(max);

            var result = subject.ToFloat();

            Assert.That(result, Is.EqualTo(max));
        }
示例#14
0
        public void InverseTest()
        {
            Rational32 target   = new Rational32(1207959552, 16777216);
            Rational32 expected = new Rational32(16777216, 1207959552);
            Rational32 actual;

            actual = target.Inverse();
            Assert.Equal(expected, actual);
        }
示例#15
0
        public void EqualsTest()
        {
            Rational32 target   = new Rational32();
            object     obj      = null;
            bool       expected = false;
            bool       actual;

            actual = target.Equals(obj);
            Assert.Equal(expected, actual);
        }
示例#16
0
        public void op_InequalityTest()
        {
            Rational32 value1   = new Rational32(1, 2);
            Rational32 value2   = new Rational32(2, 4);
            bool       expected = true;
            bool       actual;

            actual = (value1 != value2);
            Assert.Equal(expected, actual);
        }
示例#17
0
        public void GetBytesTest()
        {
            Rational32 test = new Rational32(42, 666);

            byte[] data = new byte[8];
            Array.Copy(BitConverter.GetBytes((int)42), data, 4);
            Array.Copy(BitConverter.GetBytes((int)666), 0, data, 4, 4);
            int        startIndex = 0;
            Rational32 target     = new Rational32(data, startIndex);

            Assert.Equal(data, target.GetBytes());
        }
示例#18
0
        public void can_round_trip_a_rational_float()
        {
            var original = 500.125;

            var subject = Rational32.FromFloat(original);

            Console.WriteLine("Ended up with " + subject);

            var result = subject.ToFloat();

            Assert.That(result, Is.EqualTo(original));
        }
示例#19
0
        static void Main(string[] args)
        {
            Rational32 u = new Rational32(1, 2);

            var w = new Rational32();
            var v = new Rational32(5);

            var x = Rational32.ZERO;

            Console.WriteLine(u);
            Console.WriteLine(w);
            Console.WriteLine(v);
            Console.WriteLine(x);
        }
示例#20
0
 public Rational(Rational32 value)
 {
     this.value = value;
 }
示例#21
0
 public void reciprocals_work_as_expected()
 {
     Assert.That(Rational32.FromInt(1).Reciprocal().ToFloat(), Is.EqualTo(1));
     Assert.That(Rational32.FromInt(2).Reciprocal().ToFloat(), Is.EqualTo(0.5));
     Assert.That(Rational32.FromInt(4).Reciprocal().ToFloat(), Is.EqualTo(0.25));
 }
示例#22
0
 public void reciprocal_of_zero_is_NAN()
 {
     Assert.That(Rational32.FromInt(0).Reciprocal().IsNaN(), Is.True);
 }
示例#23
0
 /// <summary>
 /// Initializes a rational constant.
 /// </summary>
 /// <param name="value">The constant's value</param>
 public Constant(Rational32 value)
 {
     this.value = new Rational(value);
 }
示例#24
0
 public Rational(int numerator)
 {
     value = new Rational32(numerator);
 }
示例#25
0
        public void DenominatorTest()
        {
            Rational32 target = new Rational32(42, 666);

            Assert.Equal(666, target.Denominator);
        }
示例#26
0
 public Rational(int numerator, int denominator)
 {
     value = new Rational32(numerator, denominator);
 }
示例#27
0
        public void NumeratorTest()
        {
            Rational32 target = new Rational32(42, 666);

            Assert.Equal(42, target.Numerator);
        }