github.com/wangyougui/gf/v2@v2.6.5/container/gqueue/gqueue_z_unit_test.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/wangyougui/gf. 6 7 // go test *.go -bench=".*" -benchmem 8 9 package gqueue_test 10 11 import ( 12 "testing" 13 "time" 14 15 "github.com/wangyougui/gf/v2/container/gqueue" 16 "github.com/wangyougui/gf/v2/test/gtest" 17 ) 18 19 func TestQueue_Len(t *testing.T) { 20 gtest.C(t, func(t *gtest.T) { 21 var ( 22 maxNum = 100 23 maxTries = 100 24 ) 25 for n := 10; n < maxTries; n++ { 26 q1 := gqueue.New(maxNum) 27 for i := 0; i < maxNum; i++ { 28 q1.Push(i) 29 } 30 t.Assert(q1.Len(), maxNum) 31 t.Assert(q1.Size(), maxNum) 32 } 33 }) 34 gtest.C(t, func(t *gtest.T) { 35 var ( 36 maxNum = 100 37 maxTries = 100 38 ) 39 for n := 10; n < maxTries; n++ { 40 q1 := gqueue.New() 41 for i := 0; i < maxNum; i++ { 42 q1.Push(i) 43 } 44 t.AssertLE(q1.Len(), maxNum) 45 t.AssertLE(q1.Size(), maxNum) 46 } 47 }) 48 } 49 50 func TestQueue_Basic(t *testing.T) { 51 gtest.C(t, func(t *gtest.T) { 52 q := gqueue.New() 53 for i := 0; i < 100; i++ { 54 q.Push(i) 55 } 56 t.Assert(q.Pop(), 0) 57 t.Assert(q.Pop(), 1) 58 }) 59 } 60 61 func TestQueue_Pop(t *testing.T) { 62 gtest.C(t, func(t *gtest.T) { 63 q1 := gqueue.New() 64 q1.Push(1) 65 q1.Push(2) 66 q1.Push(3) 67 q1.Push(4) 68 i1 := q1.Pop() 69 t.Assert(i1, 1) 70 }) 71 } 72 73 func TestQueue_Close(t *testing.T) { 74 gtest.C(t, func(t *gtest.T) { 75 q1 := gqueue.New() 76 q1.Push(1) 77 q1.Push(2) 78 // wait sync to channel 79 time.Sleep(10 * time.Millisecond) 80 t.Assert(q1.Len(), 2) 81 q1.Close() 82 }) 83 gtest.C(t, func(t *gtest.T) { 84 q1 := gqueue.New(2) 85 q1.Push(1) 86 q1.Push(2) 87 // wait sync to channel 88 time.Sleep(10 * time.Millisecond) 89 t.Assert(q1.Len(), 2) 90 q1.Close() 91 }) 92 } 93 94 func Test_Issue2509(t *testing.T) { 95 gtest.C(t, func(t *gtest.T) { 96 q := gqueue.New() 97 q.Push(1) 98 q.Push(2) 99 q.Push(3) 100 t.AssertLE(q.Len(), 3) 101 t.Assert(<-q.C, 1) 102 t.AssertLE(q.Len(), 2) 103 t.Assert(<-q.C, 2) 104 t.AssertLE(q.Len(), 1) 105 t.Assert(<-q.C, 3) 106 t.Assert(q.Len(), 0) 107 }) 108 }