func TestCrySameLocation(t *testing.T) { require.True(t, cryHeard()) require.True(t, cryHeard()) require.False(t, cryHeard()) require.True(t, cryHeard()) require.False(t, cryHeard()) require.False(t, cryHeard()) require.False(t, cryHeard()) require.True(t, cryHeard()) }
func TestIterator(t *testing.T) { const s = "AAAABBBCCDAABBB" si := StringIterator(s) for i := range s { require.True(t, si.Next()) require.Equal(t, s[i], si.Value().(byte)) } require.False(t, si.Next()) }
func TestCloseSubscription(t *testing.T) { ps := NewPubSub() ps.Publish(1) s := ps.Subscribe() select { case <-s.Values: t.FailNow() default: } ps.Publish(2) s2 := ps.Subscribe() ps.Publish(3) require.Equal(t, 2, <-s.Values) require.EqualValues(t, 3, <-s.Values) s.Close() _, ok := <-s.Values require.False(t, ok) ps.Publish(4) ps.Close() require.Equal(t, 3, <-s2.Values) require.Equal(t, 4, <-s2.Values) require.Nil(t, <-s2.Values) s2.Close() }