mirror of
https://github.com/luxfi/node.git
synced 2026-10-30 15:24:05 +00:00
The module already called itself github.com/luxfi/node while containing no node in Go: cmd/luxd was twenty-one lines that printed the size of a few types, and the Go column of the matrix measured a VM plugin. A repo that fetches the thing it claims to be has not replaced it, so the Go sources move in — 1515 files, the daemon and everything under it — and the build reaches outside this module for nothing. Rust and C++ sit beside it unchanged and are still measured against it by the differential. That is the point of one repo: the reference implementation and the two ports are the same checkout, so parity is a thing you can run rather than a thing you assert. Verified: builds, and the closure carries no lux-private — checked at build time rather than believed. The daemon starts twelve chains on a local network (P X C Q Z A B G K M F, plus D through its plugin) and reports healthy.
101 lines
1.6 KiB
Go
101 lines
1.6 KiB
Go
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package sampler
|
|
|
|
import (
|
|
"math"
|
|
"slices"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestUniformInitializeMaxUint64(t *testing.T) {
|
|
s := NewUniform()
|
|
s.Initialize(math.MaxUint64)
|
|
|
|
for {
|
|
val, hasNext := s.Next()
|
|
require.True(t, hasNext)
|
|
|
|
if val > math.MaxInt64 {
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestUniformOutOfRange(t *testing.T) {
|
|
s := NewUniform()
|
|
s.Initialize(0)
|
|
|
|
_, ok := s.Sample(1)
|
|
require.False(t, ok)
|
|
}
|
|
|
|
func TestUniformEmpty(t *testing.T) {
|
|
require := require.New(t)
|
|
s := NewUniform()
|
|
|
|
s.Initialize(1)
|
|
|
|
val, ok := s.Sample(0)
|
|
require.True(ok)
|
|
require.Empty(val)
|
|
}
|
|
|
|
func TestUniformSingleton(t *testing.T) {
|
|
require := require.New(t)
|
|
s := NewUniform()
|
|
|
|
s.Initialize(1)
|
|
|
|
val, ok := s.Sample(1)
|
|
require.True(ok)
|
|
require.Equal([]uint64{0}, val)
|
|
}
|
|
|
|
func TestUniformDistribution(t *testing.T) {
|
|
require := require.New(t)
|
|
s := NewUniform()
|
|
|
|
s.Initialize(3)
|
|
|
|
val, ok := s.Sample(3)
|
|
require.True(ok)
|
|
|
|
slices.Sort(val)
|
|
require.Equal([]uint64{0, 1, 2}, val)
|
|
}
|
|
|
|
func TestUniformOverSample(t *testing.T) {
|
|
s := NewUniform()
|
|
s.Initialize(3)
|
|
|
|
_, ok := s.Sample(4)
|
|
require.False(t, ok)
|
|
}
|
|
|
|
func TestUniformLazilySample(t *testing.T) {
|
|
require := require.New(t)
|
|
s := NewUniform()
|
|
|
|
s.Initialize(3)
|
|
|
|
for j := 0; j < 2; j++ {
|
|
sampled := map[uint64]bool{}
|
|
for i := 0; i < 3; i++ {
|
|
val, hasNext := s.Next()
|
|
require.True(hasNext)
|
|
require.False(sampled[val])
|
|
|
|
sampled[val] = true
|
|
}
|
|
|
|
_, hasNext := s.Next()
|
|
require.False(hasNext)
|
|
|
|
s.Reset()
|
|
}
|
|
}
|