This commit is contained in:
parent
96e07ece2d
commit
299212ae9e
8
.forgejo/workflows/succd.yaml
Normal file
8
.forgejo/workflows/succd.yaml
Normal file
|
@ -0,0 +1,8 @@
|
|||
on: [push]
|
||||
jobs:
|
||||
test:
|
||||
runs-on: docker
|
||||
container: golang:1.23-bookworm
|
||||
steps:
|
||||
- uses: https://github.com/actions/checkout@v3
|
||||
- run: cd succbone/succd && ./ci.sh
|
30
succbone/succd/ci.sh
Executable file
30
succbone/succd/ci.sh
Executable file
|
@ -0,0 +1,30 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
if [ ! -f go.mod ]; then
|
||||
echo "Script needs to be run with in succd directory."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Running gofmt..."
|
||||
GOFMT_OUT="$(gofmt -d $(find . -name '*.go'))"
|
||||
if [ -n "$GOFMT_OUT" ]; then
|
||||
echo "gofmt generated differences, please run 'go fmt ./' and try again."
|
||||
echo "$GOFMT_OUT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Running govet..."
|
||||
GOVET_OUT="$(go vet ./)"
|
||||
if [ -n "$GOVET_OUT" ]; then
|
||||
echo "go vet found the following errors:"
|
||||
echo "$GOVET_OUT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Running tests..."
|
||||
go test ./
|
||||
|
||||
echo "OK."
|
||||
|
72
succbone/succd/process_blocks_test.go
Normal file
72
succbone/succd/process_blocks_test.go
Normal file
|
@ -0,0 +1,72 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"math"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestMomentaryOutput(t *testing.T) {
|
||||
mo := momentaryOutput{}
|
||||
mo.trigger()
|
||||
mo.process()
|
||||
if !mo.output {
|
||||
t.Fatalf("output didn't trigger")
|
||||
}
|
||||
mo.process()
|
||||
if !mo.output {
|
||||
t.Fatalf("output didn't keep triggered")
|
||||
}
|
||||
time.Sleep(time.Second)
|
||||
mo.process()
|
||||
if mo.output {
|
||||
t.Fatalf("output didn't untrigger")
|
||||
}
|
||||
}
|
||||
|
||||
func TestThresholdOutput(t *testing.T) {
|
||||
to := thresholdOutput{
|
||||
threshold: 1,
|
||||
}
|
||||
to.process(0)
|
||||
if to.output {
|
||||
t.Fatalf("output shouldn't have triggered")
|
||||
}
|
||||
to.process(2)
|
||||
if !to.output {
|
||||
t.Fatalf("output should have triggered")
|
||||
}
|
||||
to.process(0)
|
||||
if !to.output {
|
||||
t.Fatalf("output should have triggered (in debounce)")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRingbufferInput(t *testing.T) {
|
||||
ri := ringbufferInput{
|
||||
limit: 3,
|
||||
}
|
||||
if ri.saturated() {
|
||||
t.Fatal("ringbuffer shouldn't be saturated yet")
|
||||
}
|
||||
ri.process(1)
|
||||
if ri.saturated() {
|
||||
t.Fatal("ringbuffer shouldn't be saturated yet")
|
||||
}
|
||||
ri.process(2)
|
||||
if ri.saturated() {
|
||||
t.Fatal("ringbuffer shouldn't be saturated yet")
|
||||
}
|
||||
ri.process(3)
|
||||
if !ri.saturated() {
|
||||
t.Fatalf("ringbuffer should be saturated")
|
||||
}
|
||||
|
||||
if diff := math.Abs(float64(ri.avg) - 2); diff > 0.01 {
|
||||
t.Fatalf("ringbuffer avg should be ~2, is %f", ri.avg)
|
||||
}
|
||||
ri.process(10)
|
||||
if diff := math.Abs(float64(ri.avg) - 5); diff > 0.01 {
|
||||
t.Fatalf("ringbuffer avg should be ~5, is %f", ri.avg)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue