]> Cypherpunks repositories - gostls13.git/commitdiff
testing/quick: use Uint64 instead of Int63
authorRuss Cox <rsc@golang.org>
Mon, 3 Apr 2017 18:14:09 +0000 (14:14 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 5 Apr 2017 14:03:03 +0000 (14:03 +0000)
Followup to CL 39152.

Change-Id: I9bfed0c6071ea3d3a43294a6c4a50edc131368cf
Reviewed-on: https://go-review.googlesource.com/39313
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/testing/quick/quick.go
src/testing/quick/quick_test.go

index 6415e50d652d28863c2d353e9600ed96be17eeec..94d873988aea7b4121a9cb8179873ea59e6b0caa 100644 (file)
@@ -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
index fe443592f87bed611c3957fde67fc56dcb295798..4246cd1d3ba7fa927f1871350be9f1dd5b714f71 100644 (file)
@@ -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)
+       }
+}