summaryrefslogtreecommitdiff
path: root/ms/ms_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'ms/ms_test.go')
-rw-r--r--ms/ms_test.go80
1 files changed, 73 insertions, 7 deletions
diff --git a/ms/ms_test.go b/ms/ms_test.go
index 6f1e807..988b647 100644
--- a/ms/ms_test.go
+++ b/ms/ms_test.go
@@ -8,7 +8,7 @@ import (
)
func Test_TooFewInstantsSequentialIncreasesLessThanAlwaysFalse(test *testing.T) {
- series := NewMathematicalSeries[float64](500)
+ series := NewCappedMathematicalSeries[float64](500)
series.AddElement(0.0)
if islt, _ := series.AllSequentialIncreasesLessThan(6.0); islt {
test.Fatalf("Too few instants should always yield false when asking if sequential increases are less than a value.")
@@ -16,7 +16,7 @@ func Test_TooFewInstantsSequentialIncreasesLessThanAlwaysFalse(test *testing.T)
}
func Test_SequentialIncreasesAlwaysLessThan(test *testing.T) {
- series := NewMathematicalSeries[float64](40)
+ series := NewCappedMathematicalSeries[float64](40)
previous := float64(1.0)
for _ = range utilities.Iota(1, 80) {
previous *= 1.059
@@ -28,7 +28,7 @@ func Test_SequentialIncreasesAlwaysLessThan(test *testing.T) {
}
func Test_SequentialIncreasesAlwaysLessThanWithWraparound(test *testing.T) {
- series := NewMathematicalSeries[float64](20)
+ series := NewCappedMathematicalSeries[float64](20)
previous := float64(1.0)
for range utilities.Iota(1, 20) {
previous *= 1.15
@@ -48,7 +48,7 @@ func Test_SequentialIncreasesAlwaysLessThanWithWraparound(test *testing.T) {
}
func Test_SequentialIncreasesAlwaysLessThanWithWraparoundInverse(test *testing.T) {
- series := NewMathematicalSeries[float64](20)
+ series := NewCappedMathematicalSeries[float64](20)
previous := float64(1.0)
for range utilities.Iota(1, 20) {
previous *= 1.15
@@ -68,7 +68,7 @@ func Test_SequentialIncreasesAlwaysLessThanWithWraparoundInverse(test *testing.T
}
func Test_StandardDeviationCalculation(test *testing.T) {
- series := NewMathematicalSeries[float64](5)
+ series := NewCappedMathematicalSeries[float64](5)
// 5.7, 1.0, 8.6, 7.4, 2.2
series.AddElement(5.7)
series.AddElement(1.0)
@@ -84,7 +84,7 @@ func Test_StandardDeviationCalculation(test *testing.T) {
}
func Test_RotatingValues(test *testing.T) {
- series := NewMathematicalSeries[int](5)
+ series := NewCappedMathematicalSeries[int](5)
series.AddElement(1)
series.AddElement(2)
@@ -100,7 +100,7 @@ func Test_RotatingValues(test *testing.T) {
}
}
func Test_Size(test *testing.T) {
- series := NewMathematicalSeries[int](5)
+ series := NewCappedMathematicalSeries[int](5)
series.AddElement(1)
series.AddElement(2)
@@ -115,3 +115,69 @@ func Test_Size(test *testing.T) {
test.Fatalf("Series size calculations failed.")
}
}
+
+func Test_degenerate_percentile_too_high(test *testing.T) {
+ series := NewCappedMathematicalSeries[int](21)
+ if series.Percentile(101) != 0 {
+ test.Fatalf("Series percentile of 101 failed.")
+ }
+}
+func Test_degenerate_percentile_too_low(test *testing.T) {
+ series := NewCappedMathematicalSeries[int](21)
+ if series.Percentile(-1) != 0 {
+ test.Fatalf("Series percentile of -1 failed.")
+ }
+}
+func Test_90_percentile(test *testing.T) {
+ series := NewCappedMathematicalSeries[int](10)
+ series.AddElement(10)
+ series.AddElement(9)
+ series.AddElement(8)
+ series.AddElement(7)
+ series.AddElement(6)
+ series.AddElement(5)
+ series.AddElement(4)
+ series.AddElement(3)
+ series.AddElement(2)
+ series.AddElement(1)
+
+ if series.Percentile(90) != 10 {
+ test.Fatalf("Series 90th percentile of 0 ... 10 failed: Expected 10 got %v.", series.Percentile(90))
+ }
+}
+
+func Test_90_percentile_reversed(test *testing.T) {
+ series := NewCappedMathematicalSeries[int64](10)
+ series.AddElement(1)
+ series.AddElement(2)
+ series.AddElement(3)
+ series.AddElement(4)
+ series.AddElement(5)
+ series.AddElement(6)
+ series.AddElement(7)
+ series.AddElement(8)
+ series.AddElement(9)
+ series.AddElement(10)
+
+ if series.Percentile(90) != 10 {
+ test.Fatalf("Series 90th percentile of 0 ... 10 failed: Expected 10 got %v.", series.Percentile(90))
+ }
+}
+
+func Test_50_percentile_jumbled(test *testing.T) {
+ series := NewCappedMathematicalSeries[int64](10)
+ series.AddElement(7)
+ series.AddElement(2)
+ series.AddElement(15)
+ series.AddElement(27)
+ series.AddElement(5)
+ series.AddElement(52)
+ series.AddElement(18)
+ series.AddElement(23)
+ series.AddElement(11)
+ series.AddElement(12)
+
+ if series.Percentile(50) != 15 {
+ test.Fatalf("Series 50 percentile of a jumble of numbers failed: Expected 15 got %v.", series.Percentile(50))
+ }
+}