github.com/cilium/cilium@v1.16.2/pkg/node/manager/queue_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package manager 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestQPush(t *testing.T) { 13 uu := map[string]struct { 14 items, e []string 15 }{ 16 "empty": {}, 17 "happy": { 18 items: []string{"a", "b", "c"}, 19 e: []string{"a", "b", "c"}, 20 }, 21 } 22 23 for k := range uu { 24 u := uu[k] 25 t.Run(k, func(t *testing.T) { 26 var q queue[string] 27 28 for i := range u.items { 29 q.push(&u.items[i]) 30 } 31 for i := 0; i < len(u.items); i++ { 32 v, ok := q.pop() 33 assert.True(t, ok) 34 assert.Less(t, i, len(u.e)) 35 assert.Equal(t, u.e[i], *v) 36 } 37 assert.True(t, q.isEmpty()) 38 39 v, ok := q.pop() 40 assert.False(t, ok) 41 assert.Nil(t, v) 42 }) 43 } 44 } 45 46 func TestQPop(t *testing.T) { 47 uu := map[string]struct { 48 items, e []string 49 }{ 50 "empty": {}, 51 "happy": { 52 items: []string{"a", "b", "c"}, 53 e: []string{"a", "b", "c"}, 54 }, 55 } 56 57 for k := range uu { 58 u := uu[k] 59 t.Run(k, func(t *testing.T) { 60 var q queue[string] 61 62 for i := range u.items { 63 q.push(&u.items[i]) 64 } 65 for { 66 if _, ok := q.pop(); !ok { 67 break 68 } 69 } 70 assert.True(t, q.isEmpty()) 71 }) 72 } 73 }