@@ -94,9 +94,41 @@ public void TotalOrderTestHalf(Half x, Half y, int result)
94
94
Assert . Equal ( result , Math . Sign ( comparer . Compare ( x , y ) ) ) ;
95
95
}
96
96
97
+ public static IEnumerable < object [ ] > NFloatTestData
98
+ {
99
+ get
100
+ {
101
+ yield return new object [ ] { ( NFloat ) ( 0.0f ) , ( NFloat ) ( 0.0f ) , 0 } ;
102
+ yield return new object [ ] { ( NFloat ) ( - 0.0f ) , ( NFloat ) ( - 0.0f ) , 0 } ;
103
+ yield return new object [ ] { ( NFloat ) ( 0.0f ) , ( NFloat ) ( - 0.0f ) , 1 } ;
104
+ yield return new object [ ] { ( NFloat ) ( - 0.0f ) , ( NFloat ) ( 0.0f ) , - 1 } ;
105
+ yield return new object [ ] { ( NFloat ) ( 0.0f ) , ( NFloat ) ( 1.0f ) , - 1 } ;
106
+ yield return new object [ ] { NFloat . PositiveInfinity , ( NFloat ) ( 1.0f ) , 1 } ;
107
+ yield return new object [ ] { NFloat . NaN , NFloat . NaN , 0 } ;
108
+ if ( Environment . Is64BitProcess )
109
+ {
110
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt64BitsToDouble ( 0x7FF80000_00000000 ) , ( NFloat ) ( 1.0d ) , 1 } ;
111
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt64BitsToDouble ( 0x7FF80000_00000000 ) , NFloat . PositiveInfinity , 1 } ;
112
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt64BitsToDouble ( 0xFFF80000_00000000 ) , NFloat . NegativeInfinity , - 1 } ;
113
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt64BitsToDouble ( 0xFFF80000_00000000 ) , ( NFloat ) ( - 1.0d ) , - 1 } ;
114
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt64BitsToDouble ( 0xFFF80000_00000000 ) , ( NFloat ) ( BitConverter . UInt64BitsToDouble ( 0x7FF80000_00000000 ) ) , - 1 } ;
115
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt64BitsToDouble ( 0x7FF80000_00000000 ) , ( NFloat ) ( BitConverter . UInt64BitsToDouble ( 0x7FF80000_00000001 ) ) , - 1 } ;
116
+ }
117
+ else
118
+ {
119
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt32BitsToSingle ( 0x7FC00000 ) , ( NFloat ) ( 1.0f ) , 1 } ;
120
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt32BitsToSingle ( 0x7FC00000 ) , NFloat . PositiveInfinity , 1 } ;
121
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt32BitsToSingle ( 0xFFC00000 ) , NFloat . NegativeInfinity , - 1 } ;
122
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt32BitsToSingle ( 0xFFC00000 ) , ( NFloat ) ( - 1.0f ) , - 1 } ;
123
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt32BitsToSingle ( 0xFFC00000 ) , ( NFloat ) ( BitConverter . UInt32BitsToSingle ( 0x7FC00000 ) ) , - 1 } ;
124
+ yield return new object [ ] { ( NFloat ) BitConverter . UInt32BitsToSingle ( 0x7FC00000 ) , ( NFloat ) ( BitConverter . UInt32BitsToSingle ( 0x7FC00001 ) ) , - 1 } ;
125
+ }
126
+ }
127
+ }
128
+
97
129
[ Theory ]
98
- [ MemberData ( nameof ( SingleTestData ) ) ]
99
- public void TotalOrderTestNFloat ( float x , float y , int result )
130
+ [ MemberData ( nameof ( NFloatTestData ) ) ]
131
+ public void TotalOrderTestNFloat ( NFloat x , NFloat y , int result )
100
132
{
101
133
var comparer = new TotalOrderIeee754Comparer < NFloat > ( ) ;
102
134
Assert . Equal ( result , Math . Sign ( comparer . Compare ( x , y ) ) ) ;
0 commit comments