package lastack import ( "testing" "github.com/emirpasic/gods/stacks/arraystack" "github.com/Pallinder/go-randomdata" ) func TestPush(t *testing.T) { s := New() for i := 0; i < 10; i++ { v := randomdata.Number(0, 10) s.Push(v) t.Error(v) t.Error(s.String(), " size ", s.size) } t.Error(s.Values()) for i := 0; i < 10; i++ { v, ok := s.Pop() t.Error(v, ok) t.Error(s.String(), " size ", s.size) } var l []int for i := 0; i < 10; i++ { v := randomdata.Number(0, 10) s.Push(v) l = append(l, v) } for i := -1; i < 11; i++ { v, ok := s.Get(i) t.Error(v, ok) } t.Error(l) } func BenchmarkGet(b *testing.B) { s := New() b.N = 20000000 for i := 0; i < b.N; i++ { v := randomdata.Number(0, 65535) s.Push(v) } b.ResetTimer() b.StartTimer() for i := 0; i < b.N; i++ { s.Get(i) } } func BenchmarkPush(b *testing.B) { s := New() b.N = 20000000 for i := 0; i < b.N; i++ { v := randomdata.Number(0, 65535) s.Push(v) } } func BenchmarkGodsPush(b *testing.B) { s := arraystack.New() b.N = 2000000 for i := 0; i < b.N; i++ { v := randomdata.Number(0, 65535) s.Push(v) } } func BenchmarkPop(b *testing.B) { s := New() b.N = 2000000 for i := 0; i < b.N; i++ { v := randomdata.Number(0, 65535) s.Push(v) } b.ResetTimer() b.StartTimer() for i := 0; i < b.N; i++ { s.Pop() } } func BenchmarkGodsPop(b *testing.B) { s := arraystack.New() b.N = 2000000 for i := 0; i < b.N; i++ { v := randomdata.Number(0, 65535) s.Push(v) } b.ResetTimer() b.StartTimer() for i := 0; i < b.N; i++ { s.Pop() } } func BenchmarkValues(b *testing.B) { s := New() for i := 0; i < b.N; i++ { v := randomdata.Number(0, 65535) s.Push(v) } b.ResetTimer() b.StartTimer() for i := 0; i < b.N; i++ { s.Values() } } func BenchmarkGodsValues(b *testing.B) { s := arraystack.New() for i := 0; i < b.N; i++ { v := randomdata.Number(0, 65535) s.Push(v) } b.ResetTimer() b.StartTimer() for i := 0; i < b.N; i++ { s.Values() } }