2023-07-29 21:11:04 +00:00
|
|
|
package fusenrender_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestQueue(t *testing.T) {
|
2023-07-29 22:50:58 +00:00
|
|
|
// q := make(fusenrender.PriorityQueue[*fusenrender.QueueItem], 0)
|
|
|
|
// heap.Init(&q)
|
|
|
|
|
|
|
|
// // 添加几个item
|
|
|
|
// qitema := &fusenrender.QueueItem{Group: "testa", Priority: 2}
|
|
|
|
// a := &fusenrender.Slice[*fusenrender.QueueItem]{
|
|
|
|
// Key: qitema.GetKey(),
|
|
|
|
// Value: qitema,
|
|
|
|
// }
|
|
|
|
|
|
|
|
// qitemb := &fusenrender.QueueItem{Group: "testa", Priority: 4}
|
|
|
|
// b := &fusenrender.Slice[*fusenrender.QueueItem]{
|
|
|
|
// Key: qitemb.GetKey(),
|
|
|
|
// Value: qitemb,
|
|
|
|
// }
|
|
|
|
|
|
|
|
// qitemc := &fusenrender.QueueItem{Group: "testb", Priority: 3}
|
|
|
|
// c := &fusenrender.Slice[*fusenrender.QueueItem]{
|
|
|
|
// Key: qitemc.GetKey(),
|
|
|
|
// Value: qitemc,
|
|
|
|
// }
|
|
|
|
|
|
|
|
// heap.Push(&q, a)
|
|
|
|
|
|
|
|
// heap.Push(&q, a)
|
|
|
|
|
|
|
|
// heap.Push(&q, a)
|
|
|
|
// heap.Push(&q, b)
|
|
|
|
// heap.Push(&q, c)
|
|
|
|
|
|
|
|
// // 取出最高优先级的item
|
|
|
|
// for len(q) != 0 {
|
|
|
|
// item := heap.Pop(&q).(*fusenrender.QueueItem)
|
|
|
|
// fmt.Printf("%v\n", item)
|
|
|
|
// }
|
2023-07-29 21:11:04 +00:00
|
|
|
|
|
|
|
// 更新某一项的优先级
|
|
|
|
// banana := pq[1] // 拿到banana项
|
|
|
|
// banana.key = []byte("avocado") // 更新key
|
|
|
|
// heap.Fix(&pq, banana.index) // 修复堆
|
|
|
|
|
|
|
|
// // 再取出最高优先级
|
|
|
|
// item = heap.Pop(&pq).(*Item)
|
|
|
|
// fmt.Printf("%s %s\n", item.key, item.value) // "avocado" "香蕉"
|
|
|
|
|
|
|
|
}
|