Files
gonum/graph/set/uid/uid_test.go
2025-02-01 22:18:04 +10:30

47 lines
924 B
Go

// Copyright ©2020 The Gonum Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package uid implements unique ID provision for graphs.
package uid
import (
"math"
"math/rand/v2"
"testing"
)
func TestSetChurn(t *testing.T) {
rnd := rand.New(rand.NewPCG(1, 1))
set := NewSet()
// Iterate over a number of ID allocations,
// occasionally deleting IDs from the store.
seen := make(map[int64]bool)
for k := 0; k < 2; k++ {
for i := 0; i < 1e4; i++ {
id := set.NewID()
if seen[id] {
t.Fatalf("NewID returned already used ID")
}
set.Use(id)
seen[id] = true
if rnd.Float64() < 0.01 {
j := rnd.IntN(10)
for id := range seen {
set.Release(id)
delete(seen, id)
j--
if j <= 0 {
break
}
}
}
}
// Kick the set into scavenging mode.
set.Use(math.MaxInt64)
}
}