29
29
30
30
using System ;
31
31
using System . Collections . Generic ;
32
+ using System . Linq ;
32
33
#if NET5_0_OR_GREATER
33
34
using System . Text . Json ;
34
35
using System . Text . Json . Serialization ;
@@ -75,7 +76,10 @@ public void ConstructorThrowArgumentNullException()
75
76
{
76
77
const IEnumerable < double > Data = null ;
77
78
const IEnumerable < double ? > NullableData = null ;
79
+ const IEnumerable < Tuple < double , double > > WeightedData = null ;
78
80
81
+ Assert . That ( ( ) => new DescriptiveStatistics ( WeightedData ) , Throws . TypeOf < ArgumentNullException > ( ) ) ;
82
+ Assert . That ( ( ) => new DescriptiveStatistics ( WeightedData , true ) , Throws . TypeOf < ArgumentNullException > ( ) ) ;
79
83
Assert . That ( ( ) => new DescriptiveStatistics ( Data ) , Throws . TypeOf < ArgumentNullException > ( ) ) ;
80
84
Assert . That ( ( ) => new DescriptiveStatistics ( Data , true ) , Throws . TypeOf < ArgumentNullException > ( ) ) ;
81
85
Assert . That ( ( ) => new DescriptiveStatistics ( NullableData ) , Throws . TypeOf < ArgumentNullException > ( ) ) ;
@@ -114,6 +118,7 @@ public void IEnumerableDouble(string dataSet, int digits, double skewness, doubl
114
118
Assert . AreEqual ( stats . Minimum , min ) ;
115
119
Assert . AreEqual ( stats . Maximum , max ) ;
116
120
Assert . AreEqual ( stats . Count , count ) ;
121
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
117
122
}
118
123
119
124
/// <summary>
@@ -145,6 +150,7 @@ public void IEnumerableDoubleHighAccuracy(string dataSet, double skewness, doubl
145
150
Assert . AreEqual ( stats . Minimum , min ) ;
146
151
Assert . AreEqual ( stats . Maximum , max ) ;
147
152
Assert . AreEqual ( stats . Count , count ) ;
153
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
148
154
}
149
155
150
156
/// <summary>
@@ -177,6 +183,7 @@ public void IEnumerableDoubleLowAccuracy(string dataSet, int digits, double skew
177
183
Assert . AreEqual ( stats . Minimum , min ) ;
178
184
Assert . AreEqual ( stats . Maximum , max ) ;
179
185
Assert . AreEqual ( stats . Count , count ) ;
186
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
180
187
}
181
188
182
189
/// <summary>
@@ -209,6 +216,7 @@ public void IEnumerableNullableDouble(string dataSet, int digits, double skewnes
209
216
Assert . AreEqual ( stats . Minimum , min ) ;
210
217
Assert . AreEqual ( stats . Maximum , max ) ;
211
218
Assert . AreEqual ( stats . Count , count ) ;
219
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
212
220
}
213
221
214
222
/// <summary>
@@ -240,6 +248,7 @@ public void IEnumerableNullableDoubleHighAccuracy(string dataSet, double skewnes
240
248
Assert . AreEqual ( stats . Minimum , min ) ;
241
249
Assert . AreEqual ( stats . Maximum , max ) ;
242
250
Assert . AreEqual ( stats . Count , count ) ;
251
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
243
252
}
244
253
245
254
/// <summary>
@@ -272,6 +281,205 @@ public void IEnumerableNullableDoubleLowAccuracy(string dataSet, int digits, dou
272
281
Assert . AreEqual ( stats . Minimum , min ) ;
273
282
Assert . AreEqual ( stats . Maximum , max ) ;
274
283
Assert . AreEqual ( stats . Count , count ) ;
284
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
285
+ }
286
+
287
+ /// <summary>
288
+ /// <c>IEnumerable</c> Double.
289
+ /// </summary>
290
+ /// <param name="dataSet">Dataset name.</param>
291
+ /// <param name="digits">Digits count.</param>
292
+ /// <param name="skewness">Skewness value.</param>
293
+ /// <param name="kurtosis">Kurtosis value.</param>
294
+ /// <param name="median">Median value.</param>
295
+ /// <param name="min">Min value.</param>
296
+ /// <param name="max">Max value.</param>
297
+ /// <param name="count">Count value.</param>
298
+ [ TestCase ( "lottery" , 12 , - 0.09333165310779 , - 1.19256091074856 , 522.5 , 4 , 999 , 218 ) ]
299
+ [ TestCase ( "lew" , 12 , - 0.050606638756334 , - 1.49604979214447 , - 162 , - 579 , 300 , 200 ) ]
300
+ [ TestCase ( "mavro" , 11 , 0.64492948110824 , - 0.82052379677456 , 2.0018 , 2.0013 , 2.0027 , 50 ) ]
301
+ [ TestCase ( "michelso" , 11 , - 0.0185388637725746 , 0.33968459842539 , 299.85 , 299.62 , 300.07 , 100 ) ]
302
+ [ TestCase ( "numacc1" , 15 , 0 , double . NaN , 10000002 , 10000001 , 10000003 , 3 ) ]
303
+ [ TestCase ( "numacc2" , 13 , 0 , - 2.003003003003 , 1.2 , 1.1 , 1.3 , 1001 ) ]
304
+ [ TestCase ( "numacc3" , 9 , 0 , - 2.003003003003 , 1000000.2 , 1000000.1 , 1000000.3 , 1001 ) ]
305
+ [ TestCase ( "numacc4" , 7 , 0 , - 2.00300300299913 , 10000000.2 , 10000000.1 , 10000000.3 , 1001 ) ]
306
+ [ TestCase ( "meixner" , 8 , - 0.016649617280859657 , 0.8171318629552635 , - 0.002042931016531602 , - 4.825626912281697 , 5.3018298664184913 , 10000 ) ]
307
+ public void IEnumerableTuple ( string dataSet , int digits , double skewness , double kurtosis , double median , double min , double max , int count )
308
+ {
309
+ var data = _data [ dataSet ] ;
310
+ var stats = new DescriptiveStatistics ( data . Data . Select ( x => Tuple . Create ( 1.0 , x ) ) ) ;
311
+
312
+ AssertHelpers . AlmostEqualRelative ( data . Mean , stats . Mean , 10 ) ;
313
+ AssertHelpers . AlmostEqualRelative ( data . StandardDeviation , stats . StandardDeviation , digits ) ;
314
+ AssertHelpers . AlmostEqualRelative ( skewness , stats . Skewness , 8 ) ;
315
+ AssertHelpers . AlmostEqualRelative ( kurtosis , stats . Kurtosis , 8 ) ;
316
+ Assert . AreEqual ( stats . Minimum , min ) ;
317
+ Assert . AreEqual ( stats . Maximum , max ) ;
318
+ Assert . AreEqual ( stats . Count , count ) ;
319
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
320
+ }
321
+
322
+ /// <summary>
323
+ /// <c>IEnumerable</c> Double high accuracy.
324
+ /// </summary>
325
+ /// <param name="dataSet">Dataset name.</param>
326
+ /// <param name="skewness">Skewness value.</param>
327
+ /// <param name="kurtosis">Kurtosis value.</param>
328
+ /// <param name="median">Median value.</param>
329
+ /// <param name="min">Min value.</param>
330
+ /// <param name="max">Max value.</param>
331
+ /// <param name="count">Count value.</param>
332
+ [ TestCase ( "lottery" , - 0.09333165310779 , - 1.19256091074856 , 522.5 , 4 , 999 , 218 ) ]
333
+ [ TestCase ( "lew" , - 0.050606638756334 , - 1.49604979214447 , - 162 , - 579 , 300 , 200 ) ]
334
+ [ TestCase ( "mavro" , 0.64492948110824 , - 0.82052379677456 , 2.0018 , 2.0013 , 2.0027 , 50 ) ]
335
+ [ TestCase ( "michelso" , - 0.0185388637725746 , 0.33968459842539 , 299.85 , 299.62 , 300.07 , 100 ) ]
336
+ [ TestCase ( "numacc1" , 0 , double . NaN , 10000002 , 10000001 , 10000003 , 3 ) ]
337
+ [ TestCase ( "numacc2" , 0 , - 2.003003003003 , 1.2 , 1.1 , 1.3 , 1001 ) ]
338
+ [ TestCase ( "numacc3" , 0 , - 2.003003003003 , 1000000.2 , 1000000.1 , 1000000.3 , 1001 ) ]
339
+ [ TestCase ( "numacc4" , 0 , - 2.00300300299913 , 10000000.2 , 10000000.1 , 10000000.3 , 1001 ) ]
340
+ public void IEnumerableTupleHighAccuracy ( string dataSet , double skewness , double kurtosis , double median , double min , double max , int count )
341
+ {
342
+ var data = _data [ dataSet ] ;
343
+ var stats = new DescriptiveStatistics ( data . Data . Select ( x => Tuple . Create ( 1.0 , x ) ) , true ) ;
344
+ AssertHelpers . AlmostEqualRelative ( data . Mean , stats . Mean , 14 ) ;
345
+ AssertHelpers . AlmostEqualRelative ( data . StandardDeviation , stats . StandardDeviation , 14 ) ;
346
+ AssertHelpers . AlmostEqualRelative ( skewness , stats . Skewness , 9 ) ;
347
+ AssertHelpers . AlmostEqualRelative ( kurtosis , stats . Kurtosis , 9 ) ;
348
+ Assert . AreEqual ( stats . Minimum , min ) ;
349
+ Assert . AreEqual ( stats . Maximum , max ) ;
350
+ Assert . AreEqual ( stats . Count , count ) ;
351
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
352
+ }
353
+
354
+ /// <summary>
355
+ /// <c>IEnumerable</c> double low accuracy.
356
+ /// </summary>
357
+ /// <param name="dataSet">Dataset name.</param>
358
+ /// <param name="digits">Digits count.</param>
359
+ /// <param name="skewness">Skewness value.</param>
360
+ /// <param name="kurtosis">Kurtosis value.</param>
361
+ /// <param name="median">Median value.</param>
362
+ /// <param name="min">Min value.</param>
363
+ /// <param name="max">Max value.</param>
364
+ /// <param name="count">Count value.</param>
365
+ [ TestCase ( "lottery" , 14 , - 0.09333165310779 , - 1.19256091074856 , 522.5 , 4 , 999 , 218 ) ]
366
+ [ TestCase ( "lew" , 14 , - 0.050606638756334 , - 1.49604979214447 , - 162 , - 579 , 300 , 200 ) ]
367
+ [ TestCase ( "mavro" , 11 , 0.64492948110824 , - 0.82052379677456 , 2.0018 , 2.0013 , 2.0027 , 50 ) ]
368
+ [ TestCase ( "michelso" , 11 , - 0.0185388637725746 , 0.33968459842539 , 299.85 , 299.62 , 300.07 , 100 ) ]
369
+ [ TestCase ( "numacc1" , 15 , 0 , double . NaN , 10000002 , 10000001 , 10000003 , 3 ) ]
370
+ [ TestCase ( "numacc2" , 13 , 0 , - 2.003003003003 , 1.2 , 1.1 , 1.3 , 1001 ) ]
371
+ [ TestCase ( "numacc3" , 9 , 0 , - 2.003003003003 , 1000000.2 , 1000000.1 , 1000000.3 , 1001 ) ]
372
+ [ TestCase ( "numacc4" , 7 , 0 , - 2.00300300299913 , 10000000.2 , 10000000.1 , 10000000.3 , 1001 ) ]
373
+ public void IEnumerableTupleLowAccuracy ( string dataSet , int digits , double skewness , double kurtosis , double median , double min , double max , int count )
374
+ {
375
+ var data = _data [ dataSet ] ;
376
+ var stats = new DescriptiveStatistics ( data . Data . Select ( x => Tuple . Create ( 1.0 , x ) ) , false ) ;
377
+ AssertHelpers . AlmostEqualRelative ( data . Mean , stats . Mean , 14 ) ;
378
+ AssertHelpers . AlmostEqualRelative ( data . StandardDeviation , stats . StandardDeviation , digits ) ;
379
+ AssertHelpers . AlmostEqualRelative ( skewness , stats . Skewness , 7 ) ;
380
+ AssertHelpers . AlmostEqualRelative ( kurtosis , stats . Kurtosis , 7 ) ;
381
+ Assert . AreEqual ( stats . Minimum , min ) ;
382
+ Assert . AreEqual ( stats . Maximum , max ) ;
383
+ Assert . AreEqual ( stats . Count , count ) ;
384
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
385
+ }
386
+
387
+ /// <summary>
388
+ /// <c>IEnumerable</c> <c>Nullable</c> double.
389
+ /// </summary>
390
+ /// <param name="dataSet">Dataset name.</param>
391
+ /// <param name="digits">Digits count.</param>
392
+ /// <param name="skewness">Skewness value.</param>
393
+ /// <param name="kurtosis">Kurtosis value.</param>
394
+ /// <param name="median">Median value.</param>
395
+ /// <param name="min">Min value.</param>
396
+ /// <param name="max">Max value.</param>
397
+ /// <param name="count">Count value.</param>
398
+ [ TestCase ( "lottery" , 14 , - 0.09333165310779 , - 1.19256091074856 , 522.5 , 4 , 999 , 218 ) ]
399
+ [ TestCase ( "lew" , 14 , - 0.050606638756334 , - 1.49604979214447 , - 162 , - 579 , 300 , 200 ) ]
400
+ [ TestCase ( "mavro" , 11 , 0.64492948110824 , - 0.82052379677456 , 2.0018 , 2.0013 , 2.0027 , 50 ) ]
401
+ [ TestCase ( "michelso" , 11 , - 0.0185388637725746 , 0.33968459842539 , 299.85 , 299.62 , 300.07 , 100 ) ]
402
+ [ TestCase ( "numacc1" , 15 , 0 , double . NaN , 10000002 , 10000001 , 10000003 , 3 ) ]
403
+ [ TestCase ( "numacc2" , 13 , 0 , - 2.003003003003 , 1.2 , 1.1 , 1.3 , 1001 ) ]
404
+ [ TestCase ( "numacc3" , 9 , 0 , - 2.003003003003 , 1000000.2 , 1000000.1 , 1000000.3 , 1001 ) ]
405
+ [ TestCase ( "numacc4" , 7 , 0 , - 2.00300300299913 , 10000000.2 , 10000000.1 , 10000000.3 , 1001 ) ]
406
+ public void IEnumerableZeroWeightTuple ( string dataSet , int digits , double skewness , double kurtosis , double median , double min , double max , int count )
407
+ {
408
+ var data = _data [ dataSet ] ;
409
+ var stats = new DescriptiveStatistics ( data . DataWithNulls . Select ( x => x . HasValue ? Tuple . Create ( 1.0 , x . Value ) : Tuple . Create ( 0.0 , 3.14159 ) ) ) ;
410
+ AssertHelpers . AlmostEqualRelative ( data . Mean , stats . Mean , 14 ) ;
411
+ AssertHelpers . AlmostEqualRelative ( data . StandardDeviation , stats . StandardDeviation , digits ) ;
412
+ AssertHelpers . AlmostEqualRelative ( skewness , stats . Skewness , 7 ) ;
413
+ AssertHelpers . AlmostEqualRelative ( kurtosis , stats . Kurtosis , 7 ) ;
414
+ Assert . AreEqual ( stats . Minimum , min ) ;
415
+ Assert . AreEqual ( stats . Maximum , max ) ;
416
+ Assert . AreEqual ( stats . Count , count ) ;
417
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
418
+ }
419
+
420
+ /// <summary>
421
+ /// <c>IEnumerable</c> <c>Nullable</c> double high accuracy.
422
+ /// </summary>
423
+ /// <param name="dataSet">Dataset name.</param>
424
+ /// <param name="skewness">Skewness value.</param>
425
+ /// <param name="kurtosis">Kurtosis value.</param>
426
+ /// <param name="median">Median value.</param>
427
+ /// <param name="min">Min value.</param>
428
+ /// <param name="max">Max value.</param>
429
+ /// <param name="count">Count value.</param>
430
+ [ TestCase ( "lottery" , - 0.09333165310779 , - 1.19256091074856 , 522.5 , 4 , 999 , 218 ) ]
431
+ [ TestCase ( "lew" , - 0.050606638756334 , - 1.49604979214447 , - 162 , - 579 , 300 , 200 ) ]
432
+ [ TestCase ( "mavro" , 0.64492948110824 , - 0.82052379677456 , 2.0018 , 2.0013 , 2.0027 , 50 ) ]
433
+ [ TestCase ( "michelso" , - 0.0185388637725746 , 0.33968459842539 , 299.85 , 299.62 , 300.07 , 100 ) ]
434
+ [ TestCase ( "numacc1" , 0 , double . NaN , 10000002 , 10000001 , 10000003 , 3 ) ]
435
+ [ TestCase ( "numacc2" , 0 , - 2.003003003003 , 1.2 , 1.1 , 1.3 , 1001 ) ]
436
+ [ TestCase ( "numacc3" , 0 , - 2.003003003003 , 1000000.2 , 1000000.1 , 1000000.3 , 1001 ) ]
437
+ [ TestCase ( "numacc4" , 0 , - 2.00300300299913 , 10000000.2 , 10000000.1 , 10000000.3 , 1001 ) ]
438
+ public void IEnumerableZeroWeightTupleHighAccuracy ( string dataSet , double skewness , double kurtosis , double median , double min , double max , int count )
439
+ {
440
+ var data = _data [ dataSet ] ;
441
+ var stats = new DescriptiveStatistics ( data . DataWithNulls . Select ( x => x . HasValue ? Tuple . Create ( 1.0 , x . Value ) : Tuple . Create ( 0.0 , 3.14159 ) ) , true ) ;
442
+ AssertHelpers . AlmostEqualRelative ( data . Mean , stats . Mean , 14 ) ;
443
+ AssertHelpers . AlmostEqualRelative ( data . StandardDeviation , stats . StandardDeviation , 14 ) ;
444
+ AssertHelpers . AlmostEqualRelative ( skewness , stats . Skewness , 9 ) ;
445
+ AssertHelpers . AlmostEqualRelative ( kurtosis , stats . Kurtosis , 9 ) ;
446
+ Assert . AreEqual ( stats . Minimum , min ) ;
447
+ Assert . AreEqual ( stats . Maximum , max ) ;
448
+ Assert . AreEqual ( stats . Count , count ) ;
449
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
450
+ }
451
+
452
+ /// <summary>
453
+ /// <c>IEnumerable</c> <c>Nullable</c> Double Low Accuracy.
454
+ /// </summary>
455
+ /// <param name="dataSet">Dataset name.</param>
456
+ /// <param name="digits">Digits count.</param>
457
+ /// <param name="skewness">Skewness value.</param>
458
+ /// <param name="kurtosis">Kurtosis value.</param>
459
+ /// <param name="median">Median value.</param>
460
+ /// <param name="min">Min value.</param>
461
+ /// <param name="max">Max value.</param>
462
+ /// <param name="count">Count value.</param>
463
+ [ TestCase ( "lottery" , 14 , - 0.09333165310779 , - 1.19256091074856 , 522.5 , 4 , 999 , 218 ) ]
464
+ [ TestCase ( "lew" , 14 , - 0.050606638756334 , - 1.49604979214447 , - 162 , - 579 , 300 , 200 ) ]
465
+ [ TestCase ( "mavro" , 11 , 0.64492948110824 , - 0.82052379677456 , 2.0018 , 2.0013 , 2.0027 , 50 ) ]
466
+ [ TestCase ( "michelso" , 11 , - 0.0185388637725746 , 0.33968459842539 , 299.85 , 299.62 , 300.07 , 100 ) ]
467
+ [ TestCase ( "numacc1" , 15 , 0 , double . NaN , 10000002 , 10000001 , 10000003 , 3 ) ]
468
+ [ TestCase ( "numacc2" , 13 , 0 , - 2.003003003003 , 1.2 , 1.1 , 1.3 , 1001 ) ]
469
+ [ TestCase ( "numacc3" , 9 , 0 , - 2.003003003003 , 1000000.2 , 1000000.1 , 1000000.3 , 1001 ) ]
470
+ [ TestCase ( "numacc4" , 7 , 0 , - 2.00300300299913 , 10000000.2 , 10000000.1 , 10000000.3 , 1001 ) ]
471
+ public void IEnumerableZeroWeightTupleLowAccuracy ( string dataSet , int digits , double skewness , double kurtosis , double median , double min , double max , int count )
472
+ {
473
+ var data = _data [ dataSet ] ;
474
+ var stats = new DescriptiveStatistics ( data . DataWithNulls . Select ( x => x . HasValue ? Tuple . Create ( 1.0 , x . Value ) : Tuple . Create ( 0.0 , 3.14159 ) ) , false ) ;
475
+ AssertHelpers . AlmostEqualRelative ( data . Mean , stats . Mean , 14 ) ;
476
+ AssertHelpers . AlmostEqualRelative ( data . StandardDeviation , stats . StandardDeviation , digits ) ;
477
+ AssertHelpers . AlmostEqualRelative ( skewness , stats . Skewness , 7 ) ;
478
+ AssertHelpers . AlmostEqualRelative ( kurtosis , stats . Kurtosis , 7 ) ;
479
+ Assert . AreEqual ( stats . Minimum , min ) ;
480
+ Assert . AreEqual ( stats . Maximum , max ) ;
481
+ Assert . AreEqual ( stats . Count , count ) ;
482
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
275
483
}
276
484
277
485
[ Test ]
@@ -296,6 +504,26 @@ public void ShortSequences()
296
504
var stats4 = new DescriptiveStatistics ( new [ ] { 1.0 , 2.0 , - 3.0 , - 4.0 } ) ;
297
505
Assert . That ( stats4 . Skewness , Is . Not . NaN ) ;
298
506
Assert . That ( stats4 . Kurtosis , Is . Not . NaN ) ;
507
+
508
+ var stats5 = new DescriptiveStatistics ( new Tuple < double , double > [ 0 ] ) ;
509
+ Assert . That ( stats5 . Skewness , Is . NaN ) ;
510
+ Assert . That ( stats5 . Kurtosis , Is . NaN ) ;
511
+
512
+ var stats6 = new DescriptiveStatistics ( new [ ] { Tuple . Create ( 1.0 , 1.0 ) } ) ;
513
+ Assert . That ( stats6 . Skewness , Is . NaN ) ;
514
+ Assert . That ( stats6 . Kurtosis , Is . NaN ) ;
515
+
516
+ var stats7 = new DescriptiveStatistics ( new [ ] { Tuple . Create ( 1.0 , 1.0 ) , Tuple . Create ( 1.0 , 2.0 ) } ) ;
517
+ Assert . That ( stats7 . Skewness , Is . NaN ) ;
518
+ Assert . That ( stats7 . Kurtosis , Is . NaN ) ;
519
+
520
+ var stats8 = new DescriptiveStatistics ( new [ ] { Tuple . Create ( 1.0 , 1.0 ) , Tuple . Create ( 1.0 , 2.0 ) , Tuple . Create ( 1.0 , - 3.0 ) } ) ;
521
+ Assert . That ( stats8 . Skewness , Is . Not . NaN ) ;
522
+ Assert . That ( stats8 . Kurtosis , Is . NaN ) ;
523
+
524
+ var stats9 = new DescriptiveStatistics ( new [ ] { Tuple . Create ( 1.0 , 1.0 ) , Tuple . Create ( 1.0 , 2.0 ) , Tuple . Create ( 1.0 , - 3.0 ) , Tuple . Create ( 1.0 , - 4.0 ) } ) ;
525
+ Assert . That ( stats9 . Skewness , Is . Not . NaN ) ;
526
+ Assert . That ( stats9 . Kurtosis , Is . Not . NaN ) ;
299
527
}
300
528
301
529
[ Test ]
@@ -304,6 +532,10 @@ public void ZeroVarianceSequence()
304
532
var stats = new DescriptiveStatistics ( new [ ] { 2.0 , 2.0 , 2.0 , 2.0 } ) ;
305
533
Assert . That ( stats . Skewness , Is . NaN ) ;
306
534
Assert . That ( stats . Kurtosis , Is . NaN ) ;
535
+
536
+ var stats2 = new DescriptiveStatistics ( new [ ] { Tuple . Create ( 1.0 , 2.0 ) , Tuple . Create ( 1.0 , 2.0 ) , Tuple . Create ( 1.0 , 2.0 ) , Tuple . Create ( 1.0 , 2.0 ) } ) ;
537
+ Assert . That ( stats2 . Skewness , Is . NaN ) ;
538
+ Assert . That ( stats2 . Kurtosis , Is . NaN ) ;
307
539
}
308
540
309
541
#if NET5_0_OR_GREATER
@@ -345,6 +577,7 @@ public void JsonDeserializationTest(string dataSet, int digits, double skewness,
345
577
Assert . AreEqual ( stats . Minimum , min ) ;
346
578
Assert . AreEqual ( stats . Maximum , max ) ;
347
579
Assert . AreEqual ( stats . Count , count ) ;
580
+ Assert . AreEqual ( stats . TotalWeight , count ) ;
348
581
}
349
582
#endif
350
583
}
0 commit comments