You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.9 KiB
72 lines
1.9 KiB
package m9zApi
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"tgk-touch/internal/library/m9z"
|
|
)
|
|
|
|
func TestAutomaticModeDemoStoreReturnsCopies(t *testing.T) {
|
|
store := newAutomaticModeDemoStore()
|
|
|
|
start := store.getStartTask(0)
|
|
if len(start.Loops) == 0 {
|
|
t.Fatal("demo start task should include loops")
|
|
}
|
|
start.Loops[0].TurnOn = !start.Loops[0].TurnOn
|
|
start.Loops[0].Pwm = 1
|
|
|
|
got := store.getStartTask(0)
|
|
if got.Loops[0].Pwm == 1 {
|
|
t.Fatal("demo start task loop was mutated through returned value")
|
|
}
|
|
|
|
middle := store.getMiddleTask(0)
|
|
if len(middle.ControlTaskList) == 0 || len(middle.ControlTaskList[0].Loops) == 0 {
|
|
t.Fatal("demo middle task should include control tasks and loops")
|
|
}
|
|
middle.ControlTaskList[0].Loops[0].Pwm = 1
|
|
|
|
gotMiddle := store.getMiddleTask(0)
|
|
if gotMiddle.ControlTaskList[0].Loops[0].Pwm == 1 {
|
|
t.Fatal("demo middle task loop was mutated through returned value")
|
|
}
|
|
}
|
|
|
|
func TestNormalizeAutomaticMode(t *testing.T) {
|
|
if got := normalizeAutomaticMode(2); got != 2 {
|
|
t.Fatalf("normalizeAutomaticMode(2) = %d, want 2", got)
|
|
}
|
|
if got := normalizeAutomaticMode(3); got != 0 {
|
|
t.Fatalf("normalizeAutomaticMode(3) = %d, want 0", got)
|
|
}
|
|
}
|
|
|
|
func TestAutomaticModeDemoStoreBuildsTaskPrograms(t *testing.T) {
|
|
store := newAutomaticModeDemoStore()
|
|
|
|
programs := map[string]func(uint8) (*m9z.TaskProgram, error){
|
|
"start": store.getStartTaskProgram,
|
|
"middle": store.getMiddleTaskProgram,
|
|
"stop": store.getStopTaskProgram,
|
|
}
|
|
|
|
for name, build := range programs {
|
|
t.Run(name, func(t *testing.T) {
|
|
program, err := build(1)
|
|
if err != nil {
|
|
t.Fatalf("build %s demo task program failed: %v", name, err)
|
|
}
|
|
if program == nil {
|
|
t.Fatalf("%s demo task program is nil", name)
|
|
}
|
|
if program.Index != 1 {
|
|
t.Fatalf("%s demo task program index = %d, want 1", name, program.Index)
|
|
}
|
|
if len(program.Instructions) == 0 {
|
|
t.Fatalf("%s demo task program should include instructions", name)
|
|
}
|
|
})
|
|
}
|
|
}
|