@@ -56,9 +56,6 @@ describe("equals", () => {
56
56
test ( "use mathematical equality by default" , ( ) => {
57
57
expect ( a . equals ( b ) ) . toStrictEqual ( true ) ;
58
58
} ) ;
59
- test ( "take trailing zeroes into account" , ( ) => {
60
- expect ( a . equals ( b , { normalize : true } ) ) . toStrictEqual ( false ) ;
61
- } ) ;
62
59
test ( "mathematically distinct" , ( ) => {
63
60
expect ( a . equals ( c ) ) . toStrictEqual ( false ) ;
64
61
} ) ;
@@ -87,35 +84,14 @@ describe("many digits", () => {
87
84
) . toStrictEqual ( false ) ;
88
85
} ) ;
89
86
describe ( "NaN" , ( ) => {
90
- test ( "NaN equals NaN, even if total is false " , ( ) => {
91
- expect ( nan . equals ( nan ) ) . toStrictEqual ( false ) ;
87
+ test ( "NaN equals NaN throws " , ( ) => {
88
+ expect ( ( ) => nan . equals ( nan ) ) . toThrow ( RangeError ) ;
92
89
} ) ;
93
- test ( "NaN does equal NaN, with total comparison" , ( ) => {
94
- expect (
95
- nan . equals ( nan , {
96
- normalize : true ,
97
- } )
98
- ) . toStrictEqual ( true ) ;
90
+ test ( "number equals NaN throws" , ( ) => {
91
+ expect ( ( ) => one . equals ( nan ) ) . toThrow ( RangeError ) ;
99
92
} ) ;
100
- test ( "number equals NaN is false" , ( ) => {
101
- expect ( one . equals ( nan ) ) . toStrictEqual ( false ) ;
102
- } ) ;
103
- test ( "number equals NaN fails, with total comparison" , ( ) => {
104
- expect (
105
- one . equals ( nan , {
106
- normalize : true ,
107
- } )
108
- ) . toStrictEqual ( false ) ;
109
- } ) ;
110
- test ( "NaN equals number" , ( ) => {
111
- expect ( nan . equals ( one ) ) . toStrictEqual ( false ) ;
112
- } ) ;
113
- test ( "NaN equals number is false, with total comparison" , ( ) => {
114
- expect (
115
- nan . equals ( one , {
116
- normalize : true ,
117
- } )
118
- ) . toStrictEqual ( false ) ;
93
+ test ( "NaN equals number throws" , ( ) => {
94
+ expect ( ( ) => nan . equals ( one ) ) . toThrow ( RangeError ) ;
119
95
} ) ;
120
96
} ) ;
121
97
describe ( "minus zero" , ( ) => {
@@ -169,12 +145,6 @@ describe("zero", () => {
169
145
test ( "negative zero vs zero" , ( ) => {
170
146
expect ( negZero . equals ( zero ) ) . toStrictEqual ( true ) ;
171
147
} ) ;
172
- test ( "negative zero vs zero, normalization disabled" , ( ) => {
173
- expect ( negZero . equals ( zero , { normalize : true } ) ) . toStrictEqual ( false ) ;
174
- } ) ;
175
- test ( "zero vs negative zero, normalization disabled" , ( ) => {
176
- expect ( zero . equals ( negZero , { normalize : true } ) ) . toStrictEqual ( false ) ;
177
- } ) ;
178
148
} ) ;
179
149
180
150
describe ( "normalization" , ( ) => {
@@ -190,18 +160,6 @@ describe("normalization", () => {
190
160
test ( "compare normalized to normalized" , ( ) => {
191
161
expect ( d1 . equals ( d3 ) ) . toStrictEqual ( true ) ;
192
162
} ) ;
193
- test ( "compare non-normal (1)" , ( ) => {
194
- expect ( d1 . equals ( d2 , { normalize : true } ) ) . toStrictEqual ( false ) ;
195
- } ) ;
196
- test ( "compare non-normal (2)" , ( ) => {
197
- expect ( d2 . equals ( d1 , { normalize : true } ) ) . toStrictEqual ( false ) ;
198
- } ) ;
199
- test ( "compare two non-normal values" , ( ) => {
200
- expect ( d2 . equals ( d3 , { normalize : true } ) ) . toStrictEqual ( false ) ;
201
- } ) ;
202
- test ( "compare two non-normal values" , ( ) => {
203
- expect ( d3 . equals ( d2 , { normalize : true } ) ) . toStrictEqual ( false ) ;
204
- } ) ;
205
163
} ) ;
206
164
207
165
describe ( "examples from the General Decimal Arithmetic specification" , ( ) => {
@@ -247,104 +205,68 @@ describe("examples from the General Decimal Arithmetic specification", () => {
247
205
} ) ;
248
206
test ( "example two" , ( ) => {
249
207
expect (
250
- new Decimal128 ( "-127" ) . equals ( new Decimal128 ( "12" ) , {
251
- normalize : true ,
252
- } )
208
+ new Decimal128 ( "-127" ) . equals ( new Decimal128 ( "12" ) )
253
209
) . toStrictEqual ( false ) ;
254
210
} ) ;
255
211
test ( "example three" , ( ) => {
256
212
expect (
257
- new Decimal128 ( "12.30" ) . equals ( new Decimal128 ( "12.3" ) , {
258
- normalize : true ,
259
- } )
260
- ) . toStrictEqual ( false ) ;
213
+ new Decimal128 ( "12.30" ) . equals ( new Decimal128 ( "12.3" ) )
214
+ ) . toStrictEqual ( true ) ; // would be false if we didn't normalize
261
215
} ) ;
262
216
test ( "example four" , ( ) => {
263
217
expect (
264
- new Decimal128 ( "12.30" ) . equals ( new Decimal128 ( "12.30" ) , {
265
- normalize : true ,
266
- } )
218
+ new Decimal128 ( "12.30" ) . equals ( new Decimal128 ( "12.30" ) )
267
219
) . toStrictEqual ( true ) ;
268
220
} ) ;
269
221
test ( "example five" , ( ) => {
270
222
expect (
271
- new Decimal128 ( "12.3" ) . equals ( new Decimal128 ( "12.300" ) , {
272
- normalize : true ,
273
- } )
274
- ) . toStrictEqual ( false ) ;
223
+ new Decimal128 ( "12.3" ) . equals ( new Decimal128 ( "12.300" ) )
224
+ ) . toStrictEqual ( true ) ; // would be false if we didn't normalize
275
225
} ) ;
276
226
test ( "example six" , ( ) => {
277
- expect (
278
- new Decimal128 ( "12.3" ) . equals ( new Decimal128 ( "NaN" ) , {
279
- normalize : true ,
280
- } )
281
- ) . toStrictEqual ( false ) ;
227
+ expect ( ( ) =>
228
+ new Decimal128 ( "12.3" ) . equals ( new Decimal128 ( "NaN" ) )
229
+ ) . toThrow ( RangeError ) ; // wouldn't throw if we did a total comparison
282
230
} ) ;
283
231
describe ( "inline examples" , ( ) => {
284
232
test ( "example one" , ( ) => {
285
233
expect (
286
- new Decimal128 ( "-Infinity" ) . equals ( new Decimal128 ( "-127" ) , {
287
- normalize : true ,
288
- } )
234
+ new Decimal128 ( "-Infinity" ) . equals ( new Decimal128 ( "-127" ) )
289
235
) . toStrictEqual ( false ) ;
290
236
} ) ;
291
237
test ( "example two" , ( ) => {
292
238
expect (
293
- new Decimal128 ( "-1.00" ) . equals ( new Decimal128 ( "-1" ) , {
294
- normalize : true ,
295
- } )
296
- ) . toStrictEqual ( false ) ;
239
+ new Decimal128 ( "-1.00" ) . equals ( new Decimal128 ( "-1" ) )
240
+ ) . toStrictEqual ( true ) ; // would be false if we didn't normalize
297
241
} ) ;
298
242
test ( "example three" , ( ) => {
299
- expect (
300
- new Decimal128 ( "-0.000" ) . equals ( negZero , {
301
- normalize : true ,
302
- } )
303
- ) . toStrictEqual ( false ) ;
243
+ expect ( new Decimal128 ( "-0.000" ) . equals ( negZero ) ) . toStrictEqual (
244
+ true
245
+ ) ; // would be false if we didn't normalize
304
246
} ) ;
305
247
test ( "example four" , ( ) => {
306
- expect (
307
- negZero . equals ( zero , {
308
- normalize : true ,
309
- } )
310
- ) . toStrictEqual ( false ) ;
248
+ expect ( negZero . equals ( zero ) ) . toStrictEqual ( true ) ; // would be false if we didn't normalize
311
249
} ) ;
312
250
test ( "example five" , ( ) => {
313
251
expect (
314
- new Decimal128 ( "1.2300" ) . equals ( new Decimal128 ( "1.23" ) , {
315
- normalize : true ,
316
- } )
317
- ) . toStrictEqual ( false ) ;
252
+ new Decimal128 ( "1.2300" ) . equals ( new Decimal128 ( "1.23" ) )
253
+ ) . toStrictEqual ( true ) ; // would be false if we didn't normalize
318
254
} ) ;
319
255
test ( "example six" , ( ) => {
320
256
expect (
321
- new Decimal128 ( "1.23" ) . equals ( new Decimal128 ( "1E+9" ) , {
322
- normalize : true ,
323
- } )
257
+ new Decimal128 ( "1.23" ) . equals ( new Decimal128 ( "1E+9" ) )
324
258
) . toStrictEqual ( false ) ;
325
259
} ) ;
326
260
test ( "example seven" , ( ) => {
327
261
expect (
328
- new Decimal128 ( "1E+9" ) . equals ( new Decimal128 ( "Infinity" ) , {
329
- normalize : true ,
330
- } )
262
+ new Decimal128 ( "1E+9" ) . equals ( new Decimal128 ( "Infinity" ) )
331
263
) . toStrictEqual ( false ) ;
332
264
} ) ;
333
265
test ( "example eight" , ( ) => {
334
- expect (
335
- new Decimal128 ( "Infinity" ) . equals ( new Decimal128 ( "NaN" ) , {
336
- normalize : true ,
337
- } )
338
- ) . toStrictEqual ( false ) ;
266
+ expect ( ( ) =>
267
+ new Decimal128 ( "Infinity" ) . equals ( new Decimal128 ( "NaN" ) )
268
+ ) . toThrow ( RangeError ) ; // wouldn't throw if we did a total comparison
339
269
} ) ;
340
270
} ) ;
341
271
} ) ;
342
272
} ) ;
343
-
344
- describe ( "examples from a presentation at TC39 plenary" , ( ) => {
345
- test ( "NaN with a payload" , ( ) => {
346
- expect (
347
- new Decimal128 ( "NaN" ) . equals ( new Decimal128 ( "NaN123" ) )
348
- ) . toStrictEqual ( false ) ;
349
- } ) ;
350
- } ) ;
0 commit comments