1
0
mirror of https://github.com/charlienet/go-mixed.git synced 2025-07-17 16:12:42 +08:00
Files
go-mixed/concurrent/delay_queue/delay_queue_test.go
2023-11-03 15:48:33 +08:00

49 lines
852 B
Go

package delayqueue_test
import (
"testing"
"time"
delayqueue "github.com/charlienet/go-mixed/concurrent/delay_queue"
)
type delayTask struct {
message string
delay time.Time
}
func (t delayTask) Delay() time.Time {
return t.delay
}
func TestDelayQueue(t *testing.T) {
queue := delayqueue.New[delayTask]()
queue.Push(delayTask{})
}
func TestDelayedFunc(t *testing.T) {
q := delayqueue.New[delayTask]()
q.Push(delayTask{})
}
func TestDelayedChannel(t *testing.T) {
q := delayqueue.New[delayTask]()
c := q.Channel(10)
q.Push(delayTask{message: "abc", delay: time.Now().Add(time.Second)})
q.Push(delayTask{message: "abcaaa", delay: time.Now().Add(time.Second * 3)})
for {
if q.IsEmpty() {
t.Log("队列为空,退出")
break
}
select {
case task := <-c:
t.Log(task)
case <-time.After(time.Second * 2):
}
}
}