Skip to content

Commit 4a95122

Browse files
committed
Reset() capability for Stats.
1 parent f3fd7ca commit 4a95122

File tree

4 files changed

+60
-2
lines changed

4 files changed

+60
-2
lines changed

OnTheFlyStats.Test/StatsTest.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,5 +382,50 @@ Variance 2
382382
// Assert
383383
Assert.Equal(expected, prettyPrinted);
384384
}
385+
386+
[Fact]
387+
public void Reset_ShouldSetAllValuesToInitialState()
388+
{
389+
// Arrange
390+
var stats = new Stats(new[] { 1.0, 2.0, 3.0, 4.0, 5.0 });
391+
392+
// Act
393+
stats.Reset();
394+
395+
// Assert
396+
Assert.Equal(0, stats.Count);
397+
Assert.Equal(0, stats.Sum);
398+
Assert.Equal(0, stats.LogSum);
399+
Assert.Equal(0, stats.Mean);
400+
Assert.Equal(0, stats.SquareMean);
401+
Assert.True(double.IsNaN(stats.Min));
402+
Assert.True(double.IsNaN(stats.Max));
403+
Assert.True(double.IsNaN(stats.Variance));
404+
Assert.True(double.IsNaN(stats.StandardDeviation));
405+
Assert.True(double.IsNaN(stats.PopulationVariance));
406+
Assert.True(double.IsNaN(stats.PopulationStandardDeviation));
407+
Assert.True(double.IsNaN(stats.GeometricAverage));
408+
Assert.True(double.IsNaN(stats.RootMeanSquare));
409+
Assert.True(double.IsNaN(stats.StandardError));
410+
}
411+
412+
[Fact]
413+
public void Reset_ShouldAllowNewUpdatesAfterReset()
414+
{
415+
// Arrange
416+
var stats = new Stats(new[] { 1.0, 2.0, 3.0 });
417+
418+
// Act
419+
stats.Reset();
420+
stats.Update(10.0);
421+
stats.Update(20.0);
422+
423+
// Assert
424+
Assert.Equal(2, stats.Count);
425+
Assert.Equal(30.0, stats.Sum);
426+
Assert.Equal(15.0, stats.Mean);
427+
Assert.Equal(10.0, stats.Min);
428+
Assert.Equal(20.0, stats.Max);
429+
}
385430
}
386431
}

OnTheFlyStats/IStats.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public interface IStats<TT> where TT : IConvertible
2222
TT StandardScore(TT value);
2323
TT Zscore(TT sampleMean);
2424
TT Normalize(TT value);
25+
void Reset();
2526

2627
string PrettyPrint(string title = "Descriptive statistics calculation result", int lineLength = 60);
2728
}

OnTheFlyStats/OnTheFlyStats.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
<PackageProjectUrl>https://github.com/PFalkowski/OnTheFlyStats</PackageProjectUrl>
1414
<RepositoryUrl>https://github.com/PFalkowski/OnTheFlyStats</RepositoryUrl>
1515
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
16-
<Version>6.2.1</Version>
17-
<PackageReleaseNotes>Fix Update&lt;TT&gt; method in Stats class to use potentially overriden method Update(), not updateInternal, which resulted in InternalSample not beeing updated for Samples.</PackageReleaseNotes>
16+
<Version>7.0.0</Version>
17+
<PackageReleaseNotes>Reset() capability for Stats.</PackageReleaseNotes>
1818
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1919
<UserSecretsId>21a6ced2-bed4-4e99-8fe4-0176b289630f</UserSecretsId>
2020
</PropertyGroup>

OnTheFlyStats/Stats.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,18 @@ public double Normalize(double value)
209209
return scaleMin + value * (scaleMax - scaleMin);
210210
}
211211

212+
public void Reset()
213+
{
214+
Count = 0;
215+
Sum = 0;
216+
LogSum = 0;
217+
RawVariance = 0;
218+
Mean = 0;
219+
SquareMean = 0;
220+
Min = double.NaN;
221+
Max = double.NaN;
222+
}
223+
212224
public override string ToString()
213225
{
214226
var numericFormat = new InvariantCultureRoundingFormat();

0 commit comments

Comments
 (0)