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  }