File: kalman_test.go

package info (click to toggle)
golang-github-pion-interceptor 0.1.12-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bookworm-backports, forky, sid, trixie
  • size: 764 kB
  • sloc: makefile: 8
file content (68 lines) | stat: -rw-r--r-- 2,201 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
package gcc

import (
	"testing"
	"time"

	"github.com/stretchr/testify/assert"
)

func TestKalman(t *testing.T) {
	cases := []struct {
		name         string
		opts         []kalmanOption
		measurements []time.Duration
		expected     []time.Duration
	}{
		{
			name:         "empty",
			opts:         []kalmanOption{},
			measurements: []time.Duration{},
			expected:     []time.Duration{},
		},
		{
			name: "kalmanfilter.netExample",
			opts: []kalmanOption{
				initEstimate(10 * time.Millisecond),
				initEstimateError(100),
				initProcessUncertainty(0.15),
				initMeasurementUncertainty(0.01),
			},
			measurements: []time.Duration{
				time.Duration(50.45 * float64(time.Millisecond)),
				time.Duration(50.967 * float64(time.Millisecond)),
				time.Duration(51.6 * float64(time.Millisecond)),
				time.Duration(52.106 * float64(time.Millisecond)),
				time.Duration(52.492 * float64(time.Millisecond)),
				time.Duration(52.819 * float64(time.Millisecond)),
				time.Duration(53.433 * float64(time.Millisecond)),
				time.Duration(54.007 * float64(time.Millisecond)),
				time.Duration(54.523 * float64(time.Millisecond)),
				time.Duration(54.99 * float64(time.Millisecond)),
			},
			expected: []time.Duration{
				time.Duration(50.449959 * float64(time.Millisecond)),
				time.Duration(50.936547 * float64(time.Millisecond)),
				time.Duration(51.560411 * float64(time.Millisecond)),
				time.Duration(52.07324 * float64(time.Millisecond)),
				time.Duration(52.466566 * float64(time.Millisecond)),
				time.Duration(52.797787 * float64(time.Millisecond)),
				time.Duration(53.395303 * float64(time.Millisecond)),
				time.Duration(53.970236 * float64(time.Millisecond)),
				time.Duration(54.489652 * float64(time.Millisecond)),
				time.Duration(54.960137 * float64(time.Millisecond)),
			},
		},
	}
	for _, tc := range cases {
		tc := tc
		t.Run(tc.name, func(t *testing.T) {
			k := newKalman(append(tc.opts, setDisableMeasurementUncertaintyUpdates(true))...)
			estimates := []time.Duration{}
			for _, m := range tc.measurements {
				estimates = append(estimates, k.updateEstimate(m))
			}
			assert.Equal(t, tc.expected, estimates, "%v != %v", tc.expected, estimates)
		})
	}
}