From 6e654f872a2cd0a192c695a7925b202b8281f304 Mon Sep 17 00:00:00 2001 From: William Banfield Date: Thu, 15 Jul 2021 14:18:20 -0400 Subject: [PATCH] clist: add a few basic clist tests --- internal/libs/clist/clist_test.go | 61 +++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/internal/libs/clist/clist_test.go b/internal/libs/clist/clist_test.go index 4b222e3d5..86cddae68 100644 --- a/internal/libs/clist/clist_test.go +++ b/internal/libs/clist/clist_test.go @@ -8,6 +8,7 @@ import ( "time" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestPanicOnMaxLength(t *testing.T) { @@ -334,3 +335,63 @@ FOR_LOOP2: t.Fatalf("number of pushed items (%d) not equal to number of seen items (%d)", pushed, seen) } } + +func TestRemoved(t *testing.T) { + l := New() + el1 := l.PushBack(1) + el2 := l.PushBack(2) + el3 := l.PushBack(2) + l.Remove(el1) + require.True(t, el1.Removed()) + require.False(t, el2.Removed()) + + l.Clear() + require.True(t, el2.Removed()) + require.True(t, el3.Removed()) +} + +func TestNextWaitChan(t *testing.T) { + l := New() + el1 := l.PushBack(1) + select { + case <-el1.NextWaitChan(): + t.Fatal("nextWaitChan should not have been closed") + case <-time.After(10 * time.Millisecond): + } + + el2 := l.PushBack(2) + select { + case <-el1.NextWaitChan(): + require.NotNil(t, el1.Next()) + case <-time.After(10 * time.Millisecond): + t.Fatal("nextWaitChan should have been closed") + } + + select { + case <-el2.NextWaitChan(): + t.Fatal("nextWaitChan should have been closed") + case <-time.After(10 * time.Millisecond): + } + + l.Remove(el2) + select { + case <-el2.NextWaitChan(): + require.Nil(t, el2.Next()) + case <-time.After(10 * time.Millisecond): + t.Fatal("nextWaitChan should have been closed") + } + + el3 := l.PushBack(3) + select { + case <-el3.NextWaitChan(): + t.Fatal("nextWaitChan should have been closed") + case <-time.After(10 * time.Millisecond): + } + l.Clear() + select { + case <-el3.NextWaitChan(): + require.Nil(t, el2.Next()) + case <-time.After(10 * time.Millisecond): + t.Fatal("nextWaitChan should have been closed") + } +}