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  }