export pdirty, mdirty through remote type

remote sync from setters.

add sync to tests.
This commit is contained in:
onyx-and-iris 2022-06-30 23:08:35 +01:00
parent 232f8561de
commit a7abc43726
5 changed files with 48 additions and 13 deletions

View File

@ -3,6 +3,7 @@ package voicemeeter_test
import ( import (
"os" "os"
"testing" "testing"
"time"
"github.com/onyx-and-iris/voicemeeter-api-go/voicemeeter" "github.com/onyx-and-iris/voicemeeter-api-go/voicemeeter"
) )
@ -17,3 +18,9 @@ func TestMain(m *testing.M) {
vmRem.Logout() vmRem.Logout()
os.Exit(code) os.Exit(code)
} }
func sync() {
time.Sleep(30 * time.Millisecond)
for vmRem.Pdirty() || vmRem.Mdirty() {
}
}

View File

@ -9,11 +9,13 @@ import (
func TestStrip0Mute(t *testing.T) { func TestStrip0Mute(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Strip[0].SetMute(true) vmRem.Strip[0].SetMute(true)
sync()
t.Run("Should return true when SetMute(true)", func(t *testing.T) { t.Run("Should return true when SetMute(true)", func(t *testing.T) {
assert.True(t, vmRem.Strip[0].GetMute()) assert.True(t, vmRem.Strip[0].GetMute())
}) })
vmRem.Strip[0].SetMute(false) vmRem.Strip[0].SetMute(false)
sync()
t.Run("Should return false when SetMute(false)", func(t *testing.T) { t.Run("Should return false when SetMute(false)", func(t *testing.T) {
assert.False(t, vmRem.Strip[0].GetMute()) assert.False(t, vmRem.Strip[0].GetMute())
}) })
@ -22,11 +24,13 @@ func TestStrip0Mute(t *testing.T) {
func TestStrip2Limit(t *testing.T) { func TestStrip2Limit(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Strip[2].SetLimit(-8) vmRem.Strip[2].SetLimit(-8)
sync()
t.Run("Should return -8 when SetLimit(-8)", func(t *testing.T) { t.Run("Should return -8 when SetLimit(-8)", func(t *testing.T) {
assert.Equal(t, vmRem.Strip[2].GetLimit(), -8) assert.Equal(t, vmRem.Strip[2].GetLimit(), -8)
}) })
vmRem.Strip[2].SetLimit(-32) vmRem.Strip[2].SetLimit(-32)
sync()
t.Run("Should return -32 when SetLimit(-8)", func(t *testing.T) { t.Run("Should return -32 when SetLimit(-8)", func(t *testing.T) {
assert.Equal(t, vmRem.Strip[2].GetLimit(), -32) assert.Equal(t, vmRem.Strip[2].GetLimit(), -32)
}) })
@ -36,11 +40,13 @@ func TestStrip2Limit(t *testing.T) {
func TestStrip4Label(t *testing.T) { func TestStrip4Label(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Strip[4].SetLabel("test0") vmRem.Strip[4].SetLabel("test0")
sync()
t.Run("Should return test0 when SetLimit('test0')", func(t *testing.T) { t.Run("Should return test0 when SetLimit('test0')", func(t *testing.T) {
assert.Equal(t, "test0", vmRem.Strip[4].GetLabel()) assert.Equal(t, "test0", vmRem.Strip[4].GetLabel())
}) })
vmRem.Strip[4].SetLabel("test1") vmRem.Strip[4].SetLabel("test1")
sync()
t.Run("Should return test1 when SetLimit('test1')", func(t *testing.T) { t.Run("Should return test1 when SetLimit('test1')", func(t *testing.T) {
assert.Equal(t, "test1", vmRem.Strip[4].GetLabel()) assert.Equal(t, "test1", vmRem.Strip[4].GetLabel())
}) })
@ -49,11 +55,13 @@ func TestStrip4Label(t *testing.T) {
func TestStrip5Gain(t *testing.T) { func TestStrip5Gain(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Strip[4].SetGain(-20.8) vmRem.Strip[4].SetGain(-20.8)
sync()
t.Run("Should return -20.8 when SetGain(-20.8)", func(t *testing.T) { t.Run("Should return -20.8 when SetGain(-20.8)", func(t *testing.T) {
assert.Equal(t, vmRem.Strip[4].GetGain(), -20.8) assert.Equal(t, vmRem.Strip[4].GetGain(), -20.8)
}) })
vmRem.Strip[4].SetGain(-3.6) vmRem.Strip[4].SetGain(-3.6)
sync()
t.Run("Should return -3.6 when SetGain(-3.6)", func(t *testing.T) { t.Run("Should return -3.6 when SetGain(-3.6)", func(t *testing.T) {
assert.Equal(t, vmRem.Strip[4].GetGain(), -3.6) assert.Equal(t, vmRem.Strip[4].GetGain(), -3.6)
}) })
@ -62,11 +70,13 @@ func TestStrip5Gain(t *testing.T) {
func TestStrip3Comp(t *testing.T) { func TestStrip3Comp(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Strip[4].SetComp(8.1) vmRem.Strip[4].SetComp(8.1)
sync()
t.Run("Should return 8.1 when SetGain(8.1)", func(t *testing.T) { t.Run("Should return 8.1 when SetGain(8.1)", func(t *testing.T) {
assert.Equal(t, vmRem.Strip[4].GetComp(), 8.1) assert.Equal(t, vmRem.Strip[4].GetComp(), 8.1)
}) })
vmRem.Strip[4].SetComp(1.6) vmRem.Strip[4].SetComp(1.6)
sync()
t.Run("Should return 1.6 when SetGain(1.6)", func(t *testing.T) { t.Run("Should return 1.6 when SetGain(1.6)", func(t *testing.T) {
assert.Equal(t, vmRem.Strip[4].GetComp(), 1.6) assert.Equal(t, vmRem.Strip[4].GetComp(), 1.6)
}) })
@ -75,11 +85,13 @@ func TestStrip3Comp(t *testing.T) {
func TestStrip5Mc(t *testing.T) { func TestStrip5Mc(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Strip[5].SetMc(true) vmRem.Strip[5].SetMc(true)
sync()
t.Run("Should return true when SetMc(true)", func(t *testing.T) { t.Run("Should return true when SetMc(true)", func(t *testing.T) {
assert.True(t, vmRem.Strip[5].GetMc()) assert.True(t, vmRem.Strip[5].GetMc())
}) })
vmRem.Strip[5].SetMc(false) vmRem.Strip[5].SetMc(false)
sync()
t.Run("Should return false when SetMc(false)", func(t *testing.T) { t.Run("Should return false when SetMc(false)", func(t *testing.T) {
assert.False(t, vmRem.Strip[5].GetMc()) assert.False(t, vmRem.Strip[5].GetMc())
}) })
@ -88,11 +100,13 @@ func TestStrip5Mc(t *testing.T) {
func TestStrip2GainLayer3(t *testing.T) { func TestStrip2GainLayer3(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Strip[2].GainLayer()[3].Set(-18.3) vmRem.Strip[2].GainLayer()[3].Set(-18.3)
sync()
t.Run("Should return -18.3 when SetMc(true)", func(t *testing.T) { t.Run("Should return -18.3 when SetMc(true)", func(t *testing.T) {
assert.Equal(t, vmRem.Strip[2].GainLayer()[3].Get(), -18.3) assert.Equal(t, vmRem.Strip[2].GainLayer()[3].Get(), -18.3)
}) })
vmRem.Strip[2].GainLayer()[3].Set(-25.6) vmRem.Strip[2].GainLayer()[3].Set(-25.6)
sync()
t.Run("Should return -25.6 when SetMc(true)", func(t *testing.T) { t.Run("Should return -25.6 when SetMc(true)", func(t *testing.T) {
assert.Equal(t, vmRem.Strip[2].GainLayer()[3].Get(), -25.6) assert.Equal(t, vmRem.Strip[2].GainLayer()[3].Get(), -25.6)
}) })
@ -101,11 +115,13 @@ func TestStrip2GainLayer3(t *testing.T) {
func TestBus3Eq(t *testing.T) { func TestBus3Eq(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Bus[3].SetEq(true) vmRem.Bus[3].SetEq(true)
sync()
t.Run("Should return true when SetEq(true)", func(t *testing.T) { t.Run("Should return true when SetEq(true)", func(t *testing.T) {
assert.True(t, vmRem.Bus[3].GetEq()) assert.True(t, vmRem.Bus[3].GetEq())
}) })
vmRem.Bus[3].SetEq(false) vmRem.Bus[3].SetEq(false)
sync()
t.Run("Should return false when SetEq(false)", func(t *testing.T) { t.Run("Should return false when SetEq(false)", func(t *testing.T) {
assert.False(t, vmRem.Bus[3].GetEq()) assert.False(t, vmRem.Bus[3].GetEq())
}) })
@ -114,11 +130,13 @@ func TestBus3Eq(t *testing.T) {
func TestBus4Label(t *testing.T) { func TestBus4Label(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Bus[4].SetLabel("test0") vmRem.Bus[4].SetLabel("test0")
sync()
t.Run("Should return test0 when SetEq('test0')", func(t *testing.T) { t.Run("Should return test0 when SetEq('test0')", func(t *testing.T) {
assert.Equal(t, "test0", vmRem.Bus[4].GetLabel()) assert.Equal(t, "test0", vmRem.Bus[4].GetLabel())
}) })
vmRem.Bus[4].SetLabel("test1") vmRem.Bus[4].SetLabel("test1")
sync()
t.Run("Should return test1 when SetEq('test1')", func(t *testing.T) { t.Run("Should return test1 when SetEq('test1')", func(t *testing.T) {
assert.Equal(t, "test1", vmRem.Bus[4].GetLabel()) assert.Equal(t, "test1", vmRem.Bus[4].GetLabel())
}) })
@ -127,6 +145,7 @@ func TestBus4Label(t *testing.T) {
func TestBus3ModeAmix(t *testing.T) { func TestBus3ModeAmix(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Bus[3].Mode().SetAmix(true) vmRem.Bus[3].Mode().SetAmix(true)
sync()
t.Run("Should return true when Mode().SetAmix(true)", func(t *testing.T) { t.Run("Should return true when Mode().SetAmix(true)", func(t *testing.T) {
assert.True(t, vmRem.Bus[3].Mode().GetAmix()) assert.True(t, vmRem.Bus[3].Mode().GetAmix())
}) })
@ -135,11 +154,13 @@ func TestBus3ModeAmix(t *testing.T) {
func TestVbanInStream0On(t *testing.T) { func TestVbanInStream0On(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Vban.InStream[0].SetOn(true) vmRem.Vban.InStream[0].SetOn(true)
sync()
t.Run("Should return true when SetOn(true)", func(t *testing.T) { t.Run("Should return true when SetOn(true)", func(t *testing.T) {
assert.True(t, vmRem.Vban.InStream[0].GetOn()) assert.True(t, vmRem.Vban.InStream[0].GetOn())
}) })
vmRem.Vban.InStream[0].SetOn(false) vmRem.Vban.InStream[0].SetOn(false)
sync()
t.Run("Should return false when SetOn(false)", func(t *testing.T) { t.Run("Should return false when SetOn(false)", func(t *testing.T) {
assert.False(t, vmRem.Vban.InStream[0].GetOn()) assert.False(t, vmRem.Vban.InStream[0].GetOn())
}) })
@ -148,11 +169,13 @@ func TestVbanInStream0On(t *testing.T) {
func TestVbanOutStream6On(t *testing.T) { func TestVbanOutStream6On(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Vban.OutStream[6].SetOn(true) vmRem.Vban.OutStream[6].SetOn(true)
sync()
t.Run("Should return true when SetOn(true)", func(t *testing.T) { t.Run("Should return true when SetOn(true)", func(t *testing.T) {
assert.True(t, vmRem.Vban.OutStream[6].GetOn()) assert.True(t, vmRem.Vban.OutStream[6].GetOn())
}) })
vmRem.Vban.OutStream[6].SetOn(false) vmRem.Vban.OutStream[6].SetOn(false)
sync()
t.Run("Should return false when SetOn(false)", func(t *testing.T) { t.Run("Should return false when SetOn(false)", func(t *testing.T) {
assert.False(t, vmRem.Vban.OutStream[6].GetOn()) assert.False(t, vmRem.Vban.OutStream[6].GetOn())
}) })
@ -161,11 +184,13 @@ func TestVbanOutStream6On(t *testing.T) {
func TestVbanOutStream3Name(t *testing.T) { func TestVbanOutStream3Name(t *testing.T) {
t.Skip("skipping test") t.Skip("skipping test")
vmRem.Vban.OutStream[3].SetName("test0") vmRem.Vban.OutStream[3].SetName("test0")
sync()
t.Run("Should return test0 when SetName('test0')", func(t *testing.T) { t.Run("Should return test0 when SetName('test0')", func(t *testing.T) {
assert.Equal(t, "test0", vmRem.Vban.OutStream[3].GetName()) assert.Equal(t, "test0", vmRem.Vban.OutStream[3].GetName())
}) })
vmRem.Vban.OutStream[3].SetName("test1") vmRem.Vban.OutStream[3].SetName("test1")
sync()
t.Run("Should return test1 when SetName('test1')", func(t *testing.T) { t.Run("Should return test1 when SetName('test1')", func(t *testing.T) {
assert.Equal(t, "test1", vmRem.Vban.OutStream[3].GetName()) assert.Equal(t, "test1", vmRem.Vban.OutStream[3].GetName())
}) })
@ -186,11 +211,13 @@ func TestVbanInStream4Bit(t *testing.T) {
func TestVbanOutStream4Bit(t *testing.T) { func TestVbanOutStream4Bit(t *testing.T) {
//t.Skip("skipping test") //t.Skip("skipping test")
vmRem.Vban.OutStream[4].SetBit(16) vmRem.Vban.OutStream[4].SetBit(16)
sync()
t.Run("Should return 16 when SetBit(16)", func(t *testing.T) { t.Run("Should return 16 when SetBit(16)", func(t *testing.T) {
assert.Equal(t, vmRem.Vban.OutStream[4].GetBit(), 16) assert.Equal(t, vmRem.Vban.OutStream[4].GetBit(), 16)
}) })
vmRem.Vban.OutStream[4].SetBit(24) vmRem.Vban.OutStream[4].SetBit(24)
sync()
t.Run("Should return 24 when SetBit(24)", func(t *testing.T) { t.Run("Should return 24 when SetBit(24)", func(t *testing.T) {
assert.Equal(t, vmRem.Vban.OutStream[4].GetBit(), 24) assert.Equal(t, vmRem.Vban.OutStream[4].GetBit(), 24)
}) })

View File

@ -52,7 +52,8 @@ func login(kindId string) {
os.Exit(1) os.Exit(1)
} }
fmt.Println("Logged into API") fmt.Println("Logged into API")
sync() for pdirty() || mdirty() {
}
} }
// logout logs out of the API, // logout logs out of the API,
@ -111,12 +112,6 @@ func mdirty() bool {
return int(res) == 1 return int(res) == 1
} }
func sync() {
time.Sleep(30 * time.Millisecond)
for pdirty() || mdirty() {
}
}
// getVMType returns the type of Voicemeeter, as a string // getVMType returns the type of Voicemeeter, as a string
func getVMType() string { func getVMType() string {
var type_ uint64 var type_ uint64
@ -165,7 +160,6 @@ func setParameterFloat(name string, value float32) {
fmt.Println(err) fmt.Println(err)
os.Exit(1) os.Exit(1)
} }
sync()
} }
// getParameterString gets the value of a string parameter // getParameterString gets the value of a string parameter
@ -198,7 +192,6 @@ func setParameterString(name, value string) {
fmt.Println(err) fmt.Println(err)
os.Exit(1) os.Exit(1)
} }
sync()
} }
// setParametersMulti sets multiple parameters with a script // setParametersMulti sets multiple parameters with a script
@ -242,8 +235,6 @@ func setMacroStatus(id, state, mode int) {
fmt.Println(err) fmt.Println(err)
os.Exit(1) os.Exit(1)
} }
time.Sleep(30 * time.Millisecond)
sync()
} }
func get_num_devices(dir string) uint64 { func get_num_devices(dir string) uint64 {

View File

@ -5,7 +5,7 @@ type observer interface {
OnUpdate(subject string) OnUpdate(subject string)
} }
// Publisher defines methods that support observers // publisher defines methods that support observers
type publisher struct { type publisher struct {
observerList []observer observerList []observer
} }
@ -36,7 +36,7 @@ func (p *publisher) notify(subject string) {
} }
} }
// Pooler continuously polls the dirty paramters // pooler continuously polls the dirty paramters
// it is expected to be run in a goroutine // it is expected to be run in a goroutine
type pooler struct { type pooler struct {
run bool run bool

View File

@ -47,6 +47,16 @@ func (r *remote) Version() string {
return getVersion() return getVersion()
} }
// Pdirty returns true iff a parameter value has changed
func (r *remote) Pdirty() bool {
return pdirty()
}
// Mdirty returns true iff a macrobutton value has changed
func (r *remote) Mdirty() bool {
return mdirty()
}
func (r *remote) SendText(script string) { func (r *remote) SendText(script string) {
setParametersMulti(script) setParametersMulti(script)
} }