8 type consolidatePointAverageTest struct {
14 var consolidatePointAverageTestData = []OTS_DataPoint {
30 var consolidatePointAverageTests = []consolidatePointAverageTest {
31 /* Timespan borders align with datapoints. This is the easiest case. */
32 consolidatePointAverageTest{40.0, 60.0, 48.0},
33 consolidatePointAverageTest{40.0, 50.0, 32.0},
34 /* Timespan borders between datapoints. */
35 consolidatePointAverageTest{35.0, 45.0, 24.0},
36 consolidatePointAverageTest{ 7.0, 27.0, 5.1},
37 consolidatePointAverageTest{17.0, 42.0, 12.64},
38 /* No datapoints within timespan. */
39 consolidatePointAverageTest{23.0, 28.0, 8.0},
40 /* Beginning before first datapoint */
41 consolidatePointAverageTest{-8.0, 24.0, 2.875},
42 /* End after last datapoint */
43 consolidatePointAverageTest{60.0, 180.0, 32.0},
44 /* Start and end inversed */
45 consolidatePointAverageTest{27.0, 7.0, 5.1},
48 func FloatsDiffer (a, b float64) bool {
49 if math.Fabs (a - b) > 1.0e-6 {
55 func TestConsolidatePointAverage (t *testing.T) {
56 obj := new (OTS_TimeSeries)
57 obj.DataPoints = consolidatePointAverageTestData
59 for i := 0; i < len (consolidatePointAverageTests); i++ {
60 testCase := consolidatePointAverageTests[i]
62 dp := obj.ConsolidatePointAverage (testCase.tsStart, testCase.tsEnd);
63 if FloatsDiffer (dp.Rate, testCase.rate) {
64 t.Errorf ("ConsolidatePointAverage (%g, %g) failed: Expected %g, got %g",
65 testCase.tsStart, testCase.tsEnd, testCase.rate, dp.Rate);
70 /* vim: set syntax=go sw=2 sts=2 et : */