github.com/whatap/golib@v0.0.22/util/mathutil/MathUtil_test.go (about) 1 package mathutil 2 3 import ( 4 // "fmt" 5 // "math" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestRound(t *testing.T) { 12 // s := "hello world" 13 // hO := int32(222957957) 14 // hR := HashStr(s) 15 // assert.Equal(t, hO, hR) 16 } 17 18 func TestRoundScale(t *testing.T) { 19 // s := "hello world" 20 // hO := int64(-281470736525980) 21 // hR := Hash64Str(s) 22 // assert.Equal(t, hO, hR) 23 } 24 25 func TestGetStandardDeviation(t *testing.T) { 26 rawData := []float64{ 27 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 28 } 29 30 sum, mean, sqrSum := func() (float64, float64, float64) { 31 var sum float64 = 0 32 var sqrSum float64 = 0 33 34 for _, v := range rawData { 35 sum += v 36 sqrSum += v * v 37 } 38 return sum, sum / float64(len(rawData)), sqrSum 39 }() 40 41 n := len(rawData) 42 stdDev := GetStandardDeviation(n, sum, sqrSum) 43 assert.Equal(t, stdDev, 2.8722813232690143) 44 45 assert.Equal(t, GetPct90(mean, stdDev), mean+stdDev*1.282) 46 assert.Equal(t, GetPct95(mean, stdDev), mean+stdDev*1.645) 47 } 48 49 func TestGetPct90(t *testing.T) { 50 rawData := []float64{ 51 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 52 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 53 21, 22, 23, 24, 25, 54 55 //,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100 56 } 57 58 sum, mean, sqrSum := func() (float64, float64, float64) { 59 var sum float64 = 0 60 var sqrSum float64 = 0 61 62 for _, v := range rawData { 63 sum += v 64 sqrSum += v * v 65 } 66 return sum, sum / float64(len(rawData)), sqrSum 67 }() 68 69 n := len(rawData) 70 stdDev := GetStandardDeviation(n, sum, sqrSum) 71 // assert.Equal(t, stdDev, 2.8722813232690143) 72 73 assert.Equal(t, GetPct90(mean, stdDev), mean+stdDev*1.282) 74 assert.Equal(t, GetPct95(mean, stdDev), mean+stdDev*1.645) 75 } 76 77 func TestGetPct95(t *testing.T) { 78 rawData := []float64{ 79 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 80 } 81 82 sum, mean, sqrSum := func() (float64, float64, float64) { 83 var sum float64 = 0 84 var sqrSum float64 = 0 85 86 for _, v := range rawData { 87 sum += v 88 sqrSum += v * v 89 } 90 return sum, sum / float64(len(rawData)), sqrSum 91 }() 92 93 n := len(rawData) 94 stdDev := GetStandardDeviation(n, sum, sqrSum) 95 assert.Equal(t, stdDev, 2.8722813232690143) 96 97 assert.Equal(t, GetPct90(mean, stdDev), mean+stdDev*1.282) 98 assert.Equal(t, GetPct95(mean, stdDev), mean+stdDev*1.645) 99 100 }