| // Copyright 2022 The Go 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 rand_test |
| |
| import ( |
| . "math/rand" |
| "testing" |
| ) |
| |
| // This test is first, in its own file with an alphabetically early name, |
| // to try to make sure that it runs early. It has the best chance of |
| // detecting deterministic seeding if it's the first test that runs. |
| |
| func TestAuto(t *testing.T) { |
| // Pull out 10 int64s from the global source |
| // and then check that they don't appear in that |
| // order in the deterministic Seed(1) result. |
| var out []int64 |
| for i := 0; i < 10; i++ { |
| out = append(out, Int63()) |
| } |
| |
| // Look for out in Seed(1)'s output. |
| // Strictly speaking, we should look for them in order, |
| // but this is good enough and not significantly more |
| // likely to have a false positive. |
| Seed(1) |
| found := 0 |
| for i := 0; i < 1000; i++ { |
| x := Int63() |
| if x == out[found] { |
| found++ |
| if found == len(out) { |
| t.Fatalf("found unseeded output in Seed(1) output") |
| } |
| } |
| } |
| } |