added trigger
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
package wshub
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestZoomPoints(t *testing.T) {
|
||||
cases := []struct {
|
||||
n int
|
||||
present bool
|
||||
want int
|
||||
}{
|
||||
{0, false, 2400}, // absent → default budget
|
||||
{2400, true, 2400}, // explicit budget honoured
|
||||
{0, true, 1 << 30}, // 0 → every sample in range
|
||||
{-1, true, 1 << 30}, // negative → every sample in range
|
||||
{5, true, 2400}, // implausibly small → default budget
|
||||
}
|
||||
for _, c := range cases {
|
||||
if got := zoomPoints(c.n, c.present); got != c.want {
|
||||
t.Errorf("zoomPoints(%d,%v) = %d, want %d", c.n, c.present, got, c.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestZoomSliceReturnsFullResolution(t *testing.T) {
|
||||
h := NewHub()
|
||||
rb := newSigRing(1000)
|
||||
ts := make([]float64, 500)
|
||||
vs := make([]float64, 500)
|
||||
for i := range ts {
|
||||
ts[i] = float64(i) * 0.001 // 1 kHz
|
||||
vs[i] = float64(i)
|
||||
}
|
||||
rb.write(ts, vs)
|
||||
h.rings["s1:sig"] = rb
|
||||
|
||||
// A budget larger than the range must return every sample untouched.
|
||||
res := h.zoomSlice(0.100, 0.199, []string{"s1:sig"}, 1<<30)
|
||||
sd, ok := res["s1:sig"]
|
||||
if !ok {
|
||||
t.Fatal("signal missing from zoom result")
|
||||
}
|
||||
if len(sd.T) != 100 {
|
||||
t.Fatalf("got %d points, want 100", len(sd.T))
|
||||
}
|
||||
if sd.V[0] != 100 || sd.V[99] != 199 {
|
||||
t.Errorf("value range = %v..%v, want 100..199", sd.V[0], sd.V[99])
|
||||
}
|
||||
|
||||
// A small budget decimates but keeps the endpoints.
|
||||
dec := h.zoomSlice(0.100, 0.199, []string{"s1:sig"}, 20)
|
||||
if len(dec["s1:sig"].T) != 20 {
|
||||
t.Errorf("decimated to %d points, want 20", len(dec["s1:sig"].T))
|
||||
}
|
||||
}
|
||||
|
||||
func TestZoomSliceUnknownSignal(t *testing.T) {
|
||||
h := NewHub()
|
||||
if res := h.zoomSlice(0, 1, []string{"nope", ""}, 100); len(res) != 0 {
|
||||
t.Errorf("got %d entries, want 0", len(res))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user