Here's the patch I submitted Ryan earlier in September for the random
package failure. I suppose it should be updated to use the new
platform stuff instead of the CPP ickiness.

Fyi,
Bill


---------- Forwarded message ----------
From: Bill Tutt <[email protected]>
Date: Thu, Sep 29, 2011 at 11:02 AM
Subject: [PATCH]: random package rangeTest fix for CWChar on Windows
To: [email protected]


wchar_t is unsigned and 16bits on Windows so this diff is necessary
for rangeTest to pass on Windows.

Also added a tiny bit more information to the bound violation error message.

Fyi,
Bill

diff --git a/tests/rangeTest.hs b/tests/rangeTest.hs
index 704a36c..68b3d83 100644
--- a/tests/rangeTest.hs
+++ b/tests/rangeTest.hs
@@ -35,8 +35,8 @@ checkBounds msg (exclusive,lo,hi) fun =
 --         ++ ", expected range " ++ show (lo,hi)
           ++ ":  "
    (mn,mx,sum) <- getStdRandom (fun (lo,hi))
-    when (mn <  lo)$ error$ "broke lower bound: " ++ show mn
-    when (mx > hi) $ error$ "broke upper bound: " ++ show mx
+    when (mn < lo) $ error$ "broke lower bound: " ++ show lo ++ "
with " ++ show mn
+    when (mx > hi) $ error$ "broke upper bound: " ++ show hi ++ "
with " ++ show mx
    when (exclusive && mx > hi)$ error$ "hit upper bound: " ++ show mx

    let epsilon = 0.1 * (toRational hi - toRational lo)
@@ -83,8 +83,12 @@ main =
    checkBounds "CULong"     (wordRange nb) (approxBounds random
trials (undefined:: CULong))
    checkBounds "CPtrdiff"   (intRange  nb) (approxBounds random
trials (undefined:: CPtrdiff))
    checkBounds "CSize"      (wordRange nb) (approxBounds random
trials (undefined:: CSize))
+#ifndef mingw32_HOST_OS
    checkBounds "CWchar"     (intRange 32)  (approxBounds random
trials (undefined:: CWchar))
-    checkBounds "CSigAtomic" (intRange 32)  (approxBounds random
trials (undefined:: CWchar))
+#else
+    checkBounds "CWchar"     (wordRange 16) (approxBounds random
trials (undefined:: CWchar))
+#endif
+    checkBounds "CSigAtomic" (intRange 32)  (approxBounds random
trials (undefined:: CSigAtomic))
    checkBounds "CLLong"     (intRange 64)  (approxBounds random
trials (undefined:: CLLong))
    checkBounds "CULLong"    (wordRange 64) (approxBounds random
trials (undefined:: CULLong))
    checkBounds "CIntPtr"    (intRange nb)  (approxBounds random
trials (undefined:: CIntPtr))
@@ -122,8 +126,12 @@ main =
    checkBounds "CULong R"     (False,0,200)     (approxBounds
(randomR (0,200))    trials (undefined:: CULong))
    checkBounds "CPtrdiff R"   (False,-100,100)  (approxBounds
(randomR (-100,100)) trials (undefined:: CPtrdiff))
    checkBounds "CSize R"      (False,0,200)     (approxBounds
(randomR (0,200))    trials (undefined:: CSize))
+#ifndef mingw32_HOST_OS
    checkBounds "CWchar R"     (False,-100,100)  (approxBounds
(randomR (-100,100)) trials (undefined:: CWchar))
-    checkBounds "CSigAtomic R" (False,-100,100)  (approxBounds
(randomR (-100,100)) trials (undefined:: CWchar))
+#else
+    checkBounds "CWchar R"     (False,0,100)     (approxBounds
(randomR (0,100))    trials (undefined:: CWchar))
+#endif
+    checkBounds "CSigAtomic R" (False,-100,100)  (approxBounds
(randomR (-100,100)) trials (undefined:: CSigAtomic))
    checkBounds "CLLong R"     (False,-100,100)  (approxBounds
(randomR (-100,100)) trials (undefined:: CLLong))
    checkBounds "CULLong R"    (False,0,200)     (approxBounds
(randomR (0,200))    trials (undefined:: CULLong))
    checkBounds "CIntPtr R"    (False,-100,100)  (approxBounds
(randomR (-100,100)) trials (undefined:: CIntPtr))

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to