github.com/simpleiot/simpleiot@v0.18.3/data/point_averager_test.go (about)

     1  package data
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  )
     7  
     8  func TestPointAverager(t *testing.T) {
     9  	// Round 1
    10  	avg := 2000.00
    11  
    12  	pointAverager := NewPointAverager("testPoint")
    13  	avgPoint := pointAverager.GetAverage()
    14  	if avgPoint.Value != 0 {
    15  		t.Error("point avg with 0 points is not correct: ", avgPoint.Value)
    16  	}
    17  
    18  	// Round 1.5
    19  	feedPoints(pointAverager, avg)
    20  
    21  	avgPoint = pointAverager.GetAverage()
    22  	if avgPoint.Value != avg {
    23  		t.Error("point avg is not correct")
    24  	}
    25  
    26  	pointAverager.ResetAverage()
    27  
    28  	// Round 2
    29  	avg = 2
    30  
    31  	pointAverager = NewPointAverager("testPoint")
    32  	feedPoints(pointAverager, avg)
    33  
    34  	avgPoint = pointAverager.GetAverage()
    35  	if avgPoint.Value != avg {
    36  		t.Error("point avg is not correct")
    37  	}
    38  
    39  	pointAverager.ResetAverage()
    40  
    41  	// Round 3
    42  	avg = 200.00
    43  
    44  	pointAverager = NewPointAverager("testPoint")
    45  	feedPoints(pointAverager, avg)
    46  
    47  	avgPoint = pointAverager.GetAverage()
    48  	if avgPoint.Value != avg {
    49  		t.Error("point avg is not correct")
    50  	}
    51  }
    52  
    53  func feedPoints(pointAverager *PointAverager, avg float64) {
    54  	point := Point{
    55  		Time:  time.Now(),
    56  		Value: avg - 100,
    57  	}
    58  	pointAverager.AddPoint(point)
    59  	pointAverager.AddPoint(point)
    60  
    61  	point = Point{
    62  		Time:  time.Now(),
    63  		Value: avg,
    64  	}
    65  	pointAverager.AddPoint(point)
    66  	pointAverager.AddPoint(point)
    67  
    68  	point = Point{
    69  		Time:  time.Now(),
    70  		Value: avg + 100,
    71  	}
    72  	pointAverager.AddPoint(point)
    73  	pointAverager.AddPoint(point)
    74  }