7 type SimpleStackTest struct {
11 func TestUnique(b *testing.T) {
12 stack := NewStackLock(10, 40, func() interface{} {
13 newone := &SimpleStackTest{}
16 values := []interface{}{}
17 for x := 0; x < 10; x++ {
18 values = append(values, stack.Pop())
20 if stack.active != 10 {
21 b.Errorf("Failed to match 10 active %v ", stack.active)
23 value1 := stack.Pop().(*SimpleStackTest)
24 value1.index = stack.active
25 value2 := stack.Pop().(*SimpleStackTest)
26 value2.index = stack.active
27 value3 := stack.Pop().(*SimpleStackTest)
28 value3.index = stack.active
30 if !isDifferent(value1, value2, value3) {
31 b.Errorf("Failed to get unique values")
34 if stack.active != 13 {
35 b.Errorf("Failed to match 13 active %v ", stack.active)
38 for _, v := range values {
42 b.Errorf("Failed to match 10 len %v ", stack.len)
44 if stack.capacity != 10 {
45 b.Errorf("Failed to capacity 10 len %v ", stack.capacity)
51 if stack.capacity != 13 {
52 b.Errorf("Failed to capacity 13 len %v ", stack.capacity)
55 value1 = stack.Pop().(*SimpleStackTest)
56 value2 = stack.Pop().(*SimpleStackTest)
57 value3 = stack.Pop().(*SimpleStackTest)
58 println(value1, value2, value3)
59 if !isDifferent(value1, value2, value3) {
60 b.Errorf("Failed to get unique values")
64 func TestLimits(b *testing.T) {
65 stack := NewStackLock(10, 20, func() interface{} {
66 newone := &SimpleStackTest{}
69 values := []interface{}{}
70 for x := 0; x < 50; x++ {
71 values = append(values, stack.Pop())
73 if stack.active != 50 {
74 b.Errorf("Failed to match 50 active %v ", stack.active)
76 for _, v := range values {
79 if stack.Capacity() != 20 {
80 b.Errorf("Failed to match 20 capcity %v ", stack.Capacity())
84 func isDifferent(values ...*SimpleStackTest) bool {
86 return values[0] != values[1]
88 for _, v := range values[1:] {
93 return isDifferent(values[1:]...)
96 func BenchmarkCreateWrite(b *testing.B) {
97 stack := NewStackLock(0, 40, func() interface{} { return &SimpleStackTest{} })
98 for x := 0; x < b.N; x++ {
102 func BenchmarkAllocWrite(b *testing.B) {
103 stack := NewStackLock(b.N, b.N+100, func() interface{} { return &SimpleStackTest{} })
104 for x := 0; x < b.N; x++ {
108 func BenchmarkCreate(b *testing.B) {
109 NewStackLock(b.N, b.N+100, func() interface{} { return &SimpleStackTest{} })
111 func BenchmarkParrallel(b *testing.B) {
112 stack := NewStackLock(b.N, b.N+100, func() interface{} { return &SimpleStackTest{} })
113 b.RunParallel(func(pb *testing.PB) {
115 for x := 0; x < 50000; x++ {
120 b.RunParallel(func(pb *testing.PB) {
122 for x := 0; x < 50000; x++ {