| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | package collectimport (	"testing"	"time"	"github.com/v2ray/v2ray-core/testing/unit")func TestTimedQueue(t *testing.T) {	assert := unit.Assert(t)	removed := make(map[string]bool)	nowSec := time.Now().UTC().Unix()	q := NewTimedQueue(2)	go func() {		for {			entry := <-q.RemovedEntries()			removed[entry.(string)] = true		}	}()	q.Add("Value1", nowSec)	q.Add("Value2", nowSec+5)	v1, ok := removed["Value1"]	assert.Bool(ok).IsFalse()	v2, ok := removed["Value2"]	assert.Bool(ok).IsFalse()	tick := time.Tick(4 * time.Second)	<-tick	v1, ok = removed["Value1"]	assert.Bool(ok).IsTrue()	assert.Bool(v1).IsTrue()	removed["Value1"] = false	v2, ok = removed["Value2"]	assert.Bool(ok).IsFalse()	<-tick	v2, ok = removed["Value2"]	assert.Bool(ok).IsTrue()	assert.Bool(v2).IsTrue()	removed["Value2"] = false	<-tick	assert.Bool(removed["Values"]).IsFalse()	q.Add("Value1", time.Now().UTC().Unix()+10)	<-tick	v1, ok = removed["Value1"]	assert.Bool(ok).IsTrue()	assert.Bool(v1).IsFalse()}
 |