package xiaomi import "testing" func TestPropHandler(t *testing.T) { var capturedDID string var capturedProp *PropertyValue handler := PropHandler(func(did string, prop *PropertyValue) { capturedDID = did capturedProp = prop }) handler("test.did", &PropertyValue{ DID: "test.did", SIID: 2, PIID: 1, Value: true, }) if capturedDID != "test.did" { t.Errorf("captured DID = %q", capturedDID) } if capturedProp == nil { t.Fatal("capturedProp is nil") } if capturedProp.SIID != 2 { t.Errorf("SIID = %d, want 2", capturedProp.SIID) } if b, ok := capturedProp.Value.(bool); !ok || !b { t.Errorf("Value = %v, want true", capturedProp.Value) } } func TestEventHandler(t *testing.T) { var capturedDID string var capturedEvent *EventOccurred handler := EventHandler(func(did string, event *EventOccurred) { capturedDID = did capturedEvent = event }) handler("test.did", &EventOccurred{ DID: "test.did", SIID: 3, EIID: 1, Arguments: map[string]interface{}{"key": "value"}, Timestamp: 1234567890, }) if capturedDID != "test.did" { t.Errorf("captured DID = %q", capturedDID) } if capturedEvent == nil { t.Fatal("capturedEvent is nil") } if capturedEvent.SIID != 3 { t.Errorf("SIID = %d", capturedEvent.SIID) } if v, ok := capturedEvent.Arguments["key"]; !ok || v.(string) != "value" { t.Errorf("Arguments = %v", capturedEvent.Arguments) } } func TestDeviceStateHandler(t *testing.T) { var capturedDID string var capturedState DeviceState handler := DeviceStateHandler(func(did string, state DeviceState) { capturedDID = did capturedState = state }) handler("test.did", StateOnline) if capturedDID != "test.did" { t.Errorf("captured DID = %q", capturedDID) } if capturedState != StateOnline { t.Errorf("captured state = %q", capturedState) } } func TestDeviceStateConstants(t *testing.T) { if StateOnline != "online" { t.Errorf("StateOnline = %q", StateOnline) } if StateOffline != "offline" { t.Errorf("StateOffline = %q", StateOffline) } }