1package discoverychain 2 3import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7) 8 9func TestStringStack(t *testing.T) { 10 var ( 11 v string 12 ok bool 13 ) 14 15 var ss stringStack 16 require.Equal(t, 0, ss.Len()) 17 v, ok = ss.Peek() 18 require.Empty(t, v) 19 require.False(t, ok) 20 21 ss.Push("foo") 22 require.Equal(t, 1, ss.Len()) 23 24 v, ok = ss.Peek() 25 require.Equal(t, "foo", v) 26 require.True(t, ok) 27 require.Equal(t, 1, ss.Len()) 28 29 v, ok = ss.Pop() 30 require.Equal(t, "foo", v) 31 require.True(t, ok) 32 require.Equal(t, 0, ss.Len()) 33 34 ss.Push("foo") 35 ss.Push("bar") 36 ss.Push("baz") 37 require.Equal(t, 3, ss.Len()) 38 39 v, ok = ss.Peek() 40 require.Equal(t, "baz", v) 41 require.True(t, ok) 42 require.Equal(t, 3, ss.Len()) 43 44 v, ok = ss.Pop() 45 require.Equal(t, "baz", v) 46 require.True(t, ok) 47 require.Equal(t, 2, ss.Len()) 48 49 v, ok = ss.Pop() 50 require.Equal(t, "bar", v) 51 require.True(t, ok) 52 require.Equal(t, 1, ss.Len()) 53 54 v, ok = ss.Pop() 55 require.Equal(t, "foo", v) 56 require.True(t, ok) 57 require.Equal(t, 0, ss.Len()) 58} 59