1- // Copyright (c) Six Labors.
1+ // Copyright (c) Six Labors.
22// Licensed under the Six Labors Split License.
33
44namespace SixLabors . ImageSharp . Tests ;
@@ -14,15 +14,15 @@ public class RationalTests
1414 [ Fact ]
1515 public void AreEqual ( )
1616 {
17- var r1 = new Rational ( 3 , 2 ) ;
18- var r2 = new Rational ( 3 , 2 ) ;
17+ Rational r1 = new ( 3 , 2 ) ;
18+ Rational r2 = new ( 3 , 2 ) ;
1919
2020 Assert . Equal ( r1 , r2 ) ;
2121 Assert . True ( r1 == r2 ) ;
2222
23- var r3 = new Rational ( 7.55 ) ;
24- var r4 = new Rational ( 755 , 100 ) ;
25- var r5 = new Rational ( 151 , 20 ) ;
23+ Rational r3 = new ( 7.55 ) ;
24+ Rational r4 = new ( 755 , 100 ) ;
25+ Rational r5 = new ( 151 , 20 ) ;
2626
2727 Assert . Equal ( r3 , r4 ) ;
2828 Assert . Equal ( r4 , r5 ) ;
@@ -34,20 +34,39 @@ public void AreEqual()
3434 [ Fact ]
3535 public void AreNotEqual ( )
3636 {
37- var first = new Rational ( 0 , 100 ) ;
38- var second = new Rational ( 100 , 100 ) ;
37+ Rational first = new ( 0 , 100 ) ;
38+ Rational second = new ( 100 , 100 ) ;
3939
4040 Assert . NotEqual ( first , second ) ;
4141 Assert . True ( first != second ) ;
4242 }
4343
44+ /// <summary>
45+ /// Tests known out-of-range values.
46+ /// </summary>
47+ /// <param name="value">The input value.</param>
48+ /// <param name="numerator">The expected numerator.</param>
49+ /// <param name="denominator">The expected denominator.</param>
50+ [ Theory ]
51+ [ InlineData ( 0 , 0 , 1 ) ]
52+ [ InlineData ( double . NaN , 0 , 0 ) ]
53+ [ InlineData ( double . PositiveInfinity , 1 , 0 ) ]
54+ [ InlineData ( double . NegativeInfinity , 1 , 0 ) ]
55+ public void FromDoubleOutOfRange ( double value , uint numerator , uint denominator )
56+ {
57+ Rational r = Rational . FromDouble ( value ) ;
58+
59+ Assert . Equal ( numerator , r . Numerator ) ;
60+ Assert . Equal ( denominator , r . Denominator ) ;
61+ }
62+
4463 /// <summary>
4564 /// Tests whether the Rational constructor correctly assign properties.
4665 /// </summary>
4766 [ Fact ]
4867 public void ConstructorAssignsProperties ( )
4968 {
50- var rational = new Rational ( 7 , 55 ) ;
69+ Rational rational = new ( 7 , 55 ) ;
5170 Assert . Equal ( 7U , rational . Numerator ) ;
5271 Assert . Equal ( 55U , rational . Denominator ) ;
5372
@@ -71,15 +90,15 @@ public void ConstructorAssignsProperties()
7190 [ Fact ]
7291 public void Fraction ( )
7392 {
74- var first = new Rational ( 1.0 / 1600 ) ;
75- var second = new Rational ( 1.0 / 1600 , true ) ;
93+ Rational first = new ( 1.0 / 1600 ) ;
94+ Rational second = new ( 1.0 / 1600 , true ) ;
7695 Assert . False ( first . Equals ( second ) ) ;
7796 }
7897
7998 [ Fact ]
8099 public void ToDouble ( )
81100 {
82- var rational = new Rational ( 0 , 0 ) ;
101+ Rational rational = new ( 0 , 0 ) ;
83102 Assert . Equal ( double . NaN , rational . ToDouble ( ) ) ;
84103
85104 rational = new Rational ( 2 , 0 ) ;
@@ -89,7 +108,7 @@ public void ToDouble()
89108 [ Fact ]
90109 public void ToStringRepresentation ( )
91110 {
92- var rational = new Rational ( 0 , 0 ) ;
111+ Rational rational = new ( 0 , 0 ) ;
93112 Assert . Equal ( "[ Indeterminate ]" , rational . ToString ( ) ) ;
94113
95114 rational = new Rational ( double . PositiveInfinity ) ;
0 commit comments