Fix updating of EventManager.CurrentState

The EventManager methods did not use a pointer as receiver, which
caused updated of CurrentState to be lost.
This commit is contained in:
Wichert Akkerman 2019-12-09 12:30:37 +01:00
parent 6a3833b27d
commit f8c992a385
2 changed files with 21 additions and 3 deletions

View File

@ -60,21 +60,21 @@ type EventManager struct {
Handler EventHandler Handler EventHandler
} }
func (em EventManager) updateState(state ConnState) { func (em *EventManager) updateState(state ConnState) {
em.CurrentState = state em.CurrentState = state
if em.Handler != nil { if em.Handler != nil {
em.Handler(Event{State: em.CurrentState}) em.Handler(Event{State: em.CurrentState})
} }
} }
func (em EventManager) disconnected(state SMState) { func (em *EventManager) disconnected(state SMState) {
em.CurrentState = StateDisconnected em.CurrentState = StateDisconnected
if em.Handler != nil { if em.Handler != nil {
em.Handler(Event{State: em.CurrentState, SMState: state}) em.Handler(Event{State: em.CurrentState, SMState: state})
} }
} }
func (em EventManager) streamError(error, desc string) { func (em *EventManager) streamError(error, desc string) {
em.CurrentState = StateStreamError em.CurrentState = StateStreamError
if em.Handler != nil { if em.Handler != nil {
em.Handler(Event{State: em.CurrentState, StreamError: error, Description: desc}) em.Handler(Event{State: em.CurrentState, StreamError: error, Description: desc})

View File

@ -19,6 +19,24 @@ const (
defaultTimeout = 2 * time.Second defaultTimeout = 2 * time.Second
) )
func TestEventManager(t *testing.T) {
mgr := EventManager{}
mgr.updateState(StateConnected)
if mgr.CurrentState != StateConnected {
t.Fatal("CurrentState not updated by updateState()")
}
mgr.disconnected(SMState{})
if mgr.CurrentState != StateDisconnected {
t.Fatalf("CurrentState not reset by disconnected()")
}
mgr.streamError(ErrTLSNotSupported.Error(), "")
if mgr.CurrentState != StateStreamError {
t.Fatalf("CurrentState not set by streamError()")
}
}
func TestClient_Connect(t *testing.T) { func TestClient_Connect(t *testing.T) {
// Setup Mock server // Setup Mock server
mock := ServerMock{} mock := ServerMock{}