package testutil import ( "errors" "time" "github.com/noahlann/nnet/internal/connection" ) // MockConnection is a mock implementation of ConnectionInterface for testing type MockConnection struct { IDValue string RemoteAddrValue string LocalAddrValue string WriteFunc func(data []byte) error CloseFunc func() error LastActiveValue time.Time WriteError bool } // NewMockConnection creates a new mock connection func NewMockConnection(id string) connection.ConnectionInterface { return &MockConnection{ IDValue: id, RemoteAddrValue: "127.0.0.1:6995", LocalAddrValue: "127.0.0.1:6995", LastActiveValue: time.Now(), WriteFunc: func(data []byte) error { return nil }, CloseFunc: func() error { return nil }, } } // ID returns the connection ID func (m *MockConnection) ID() string { return m.IDValue } // RemoteAddr returns the remote address func (m *MockConnection) RemoteAddr() string { return m.RemoteAddrValue } // LocalAddr returns the local address func (m *MockConnection) LocalAddr() string { return m.LocalAddrValue } // Write writes data to the connection func (m *MockConnection) Write(data []byte) error { if m.WriteError { return errors.New("write error") } if m.WriteFunc != nil { return m.WriteFunc(data) } return nil } // Close closes the connection func (m *MockConnection) Close() error { if m.CloseFunc != nil { return m.CloseFunc() } return nil } // LastActive returns the last active time (if implemented) func (m *MockConnection) LastActive() time.Time { return m.LastActiveValue } // SetLastActive sets the last active time func (m *MockConnection) SetLastActive(t time.Time) { m.LastActiveValue = t } // SetWriteError sets whether Write should return an error func (m *MockConnection) SetWriteError(err bool) { m.WriteError = err } // SetWriteFunc sets a custom write function func (m *MockConnection) SetWriteFunc(fn func(data []byte) error) { m.WriteFunc = fn } // SetCloseFunc sets a custom close function func (m *MockConnection) SetCloseFunc(fn func() error) { m.CloseFunc = fn }