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