package device import ( "testing" "visiona-local/server/internal/driver" ) type testDriver struct { info driver.DeviceInfo connected bool } func (d *testDriver) Info() driver.DeviceInfo { return d.info } func (d *testDriver) Connect() error { d.connected = true; d.info.Status = driver.StatusConnected; return nil } func (d *testDriver) Disconnect() error { d.connected = false; d.info.Status = driver.StatusDisconnected; return nil } func (d *testDriver) IsConnected() bool { return d.connected } func (d *testDriver) Flash(_ string, _ chan<- driver.FlashProgress) error { return nil } func (d *testDriver) StartInference() error { return nil } func (d *testDriver) StopInference() error { return nil } func (d *testDriver) ReadInference() (*driver.InferenceResult, error) { return nil, nil } func (d *testDriver) RunInference(_ []byte) (*driver.InferenceResult, error) { return nil, nil } func (d *testDriver) GetModelInfo() (*driver.ModelInfo, error) { return nil, nil } func TestNewManager_MockMode(t *testing.T) { registry := NewRegistry() mgr := NewManager(registry, true, 2, "") devices := mgr.ListDevices() if len(devices) != 2 { t.Errorf("NewManager mock mode: got %d devices, want 2", len(devices)) } } func TestManager_ListDevices(t *testing.T) { registry := NewRegistry() mgr := NewManager(registry, false, 0, "") mgr.sessions["test-1"] = NewSession(&testDriver{ info: driver.DeviceInfo{ID: "test-1", Name: "Test Device", Type: "KL720", Status: driver.StatusDetected}, }) devices := mgr.ListDevices() if len(devices) != 1 { t.Errorf("ListDevices() = %d, want 1", len(devices)) } } func TestManager_GetDevice(t *testing.T) { registry := NewRegistry() mgr := NewManager(registry, false, 0, "") mgr.sessions["test-1"] = NewSession(&testDriver{ info: driver.DeviceInfo{ID: "test-1"}, }) t.Run("existing device", func(t *testing.T) { s, err := mgr.GetDevice("test-1") if err != nil { t.Errorf("GetDevice() error = %v", err) } if s == nil { t.Error("GetDevice() returned nil session") } }) t.Run("non-existing device", func(t *testing.T) { _, err := mgr.GetDevice("test-999") if err == nil { t.Error("GetDevice() expected error for non-existing device") } }) } func TestManager_Connect(t *testing.T) { registry := NewRegistry() mgr := NewManager(registry, false, 0, "") td := &testDriver{info: driver.DeviceInfo{ID: "test-1", Status: driver.StatusDetected}} mgr.sessions["test-1"] = NewSession(td) // Drain event bus in background go func() { for range mgr.Events() { } }() err := mgr.Connect("test-1") if err != nil { t.Errorf("Connect() error = %v", err) } if !td.connected { t.Error("Connect() did not connect device") } }