github.com/evdatsion/aphelion-dpos-bft@v0.32.1/libs/events/event_cache_test.go (about)

     1  package events
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestEventCache_Flush(t *testing.T) {
    11  	evsw := NewEventSwitch()
    12  	evsw.Start()
    13  	evsw.AddListenerForEvent("nothingness", "", func(data EventData) {
    14  		// Check we are not initialising an empty buffer full of zeroed eventInfos in the EventCache
    15  		require.FailNow(t, "We should never receive a message on this switch since none are fired")
    16  	})
    17  	evc := NewEventCache(evsw)
    18  	evc.Flush()
    19  	// Check after reset
    20  	evc.Flush()
    21  	fail := true
    22  	pass := false
    23  	evsw.AddListenerForEvent("somethingness", "something", func(data EventData) {
    24  		if fail {
    25  			require.FailNow(t, "Shouldn't see a message until flushed")
    26  		}
    27  		pass = true
    28  	})
    29  	evc.FireEvent("something", struct{ int }{1})
    30  	evc.FireEvent("something", struct{ int }{2})
    31  	evc.FireEvent("something", struct{ int }{3})
    32  	fail = false
    33  	evc.Flush()
    34  	assert.True(t, pass)
    35  }