From a7b51cfb47b551f3352d5158b6c3a9e68a931d5b Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 3 Apr 2017 14:14:09 -0400 Subject: [PATCH] testing/quick: use Uint64 instead of Int63 Followup to CL 39152. Change-Id: I9bfed0c6071ea3d3a43294a6c4a50edc131368cf Reviewed-on: https://go-review.googlesource.com/39313 Run-TryBot: Russ Cox Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- src/testing/quick/quick.go | 6 +----- src/testing/quick/quick_test.go | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/testing/quick/quick.go b/src/testing/quick/quick.go index 6415e50d652d28..94d873988aea7b 100644 --- a/src/testing/quick/quick.go +++ b/src/testing/quick/quick.go @@ -46,11 +46,7 @@ func randFloat64(rand *rand.Rand) float64 { // randInt64 returns a random int64. func randInt64(rand *rand.Rand) int64 { - x := rand.Int63() - 1<<62 - // x in [-2⁶²,2⁶²), so top two bits are 00 or 11, never 10 or 01. - // Mix in some bits from the middle. - x ^= x<<29 ^ x<<43 - return x + return int64(rand.Uint64()) } // complexSize is the maximum length of arbitrary values that contain other diff --git a/src/testing/quick/quick_test.go b/src/testing/quick/quick_test.go index fe443592f87bed..4246cd1d3ba7fa 100644 --- a/src/testing/quick/quick_test.go +++ b/src/testing/quick/quick_test.go @@ -307,3 +307,21 @@ func TestNonZeroSliceAndMap(t *testing.T) { t.Fatal(err) } } + +func TestInt64(t *testing.T) { + var lo, hi int64 + f := func(x int64) bool { + if x < lo { + lo = x + } + if x > hi { + hi = x + } + return true + } + cfg := &Config{MaxCount: 100000} + Check(f, cfg) + if uint64(lo)>>62 == 0 || uint64(hi)>>62 == 0 { + t.Errorf("int64 returned range %#016x,%#016x; does not look like full range", lo, hi) + } +}