zz_bounds_test.gno
0.78 Kb · 27 lines
1package collatz
2
3import (
4 "strconv"
5 "testing"
6
7 "gno.land/p/nt/uassert/v0"
8)
9
10// Anyone may Compute, and each new n is an entry the root page sorts: the
11// leaderboard refuses a new n once it is full, and still updates an old one.
12func TestLeaderboardIsBounded(cur realm, t *testing.T) {
13 var added []string
14 for i := 1; results.Size() < MaxResults; i++ {
15 k := strconv.Itoa(1_000_000 + i)
16 results.Set(k, Result{N: int64(1_000_000 + i)})
17 added = append(added, k)
18 }
19 // One realm state per package run: leave the board as it was found.
20 defer func() {
21 for _, k := range added {
22 results.Remove(k)
23 }
24 }()
25 uassert.AbortsContains(t, cur, "leaderboard is full", func() { Compute(cross(cur), 999_999_937) })
26 Compute(cross(cur), 1_000_001) // an n already recorded is refreshed, not refused
27}