hspec-core 2.7.3 → 2.7.4
raw patch · 4 files changed
+37/−9 lines, 4 files
Files
- hspec-core.cabal +1/−1
- src/Test/Hspec/Core/Runner.hs +1/−7
- src/Test/Hspec/Core/Shuffle.hs +12/−1
- test/Test/Hspec/Core/ShuffleSpec.hs +23/−0
hspec-core.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: hspec-core-version: 2.7.3+version: 2.7.4 license: MIT license-file: LICENSE copyright: (c) 2011-2019 Simon Hengel,
src/Test/Hspec/Core/Runner.hs view
@@ -317,10 +317,4 @@ randomizeForest :: Integer -> [Tree c a] -> [Tree c a] randomizeForest seed t = runST $ do ref <- newSTRef (mkStdGen $ fromIntegral seed)- mapM (randomizeTree ref) t--randomizeTree :: STRef s StdGen -> Tree c a -> ST s (Tree c a)-randomizeTree ref t = case t of- Node d xs -> Node d <$> shuffle ref xs- NodeWithCleanup c xs -> NodeWithCleanup c <$> shuffle ref xs- Leaf {} -> return t+ shuffleForest ref t
src/Test/Hspec/Core/Shuffle.hs view
@@ -1,18 +1,29 @@ {-# LANGUAGE CPP #-} module Test.Hspec.Core.Shuffle (- shuffle+ shuffleForest #ifdef TEST+, shuffle , mkArray #endif ) where import Prelude () import Test.Hspec.Core.Compat+import Test.Hspec.Core.Tree import System.Random import Control.Monad.ST import Data.STRef import Data.Array.ST++shuffleForest :: STRef s StdGen -> [Tree c a] -> ST s [Tree c a]+shuffleForest ref xs = (shuffle ref xs >>= mapM (shuffleTree ref))++shuffleTree :: STRef s StdGen -> Tree c a -> ST s (Tree c a)+shuffleTree ref t = case t of+ Node d xs -> Node d <$> shuffleForest ref xs+ NodeWithCleanup c xs -> NodeWithCleanup c <$> shuffleForest ref xs+ Leaf {} -> return t shuffle :: STRef s StdGen -> [a] -> ST s [a] shuffle ref xs = do
test/Test/Hspec/Core/ShuffleSpec.hs view
@@ -4,6 +4,7 @@ import Helper import qualified Test.Hspec.Core.Shuffle as H+import Test.Hspec.Core.Tree import Data.Array.ST import Control.Monad.ST@@ -12,6 +13,28 @@ spec :: Spec spec = do+ describe "shuffleForest" $ do+ let+ shuffleForest :: Int -> [Tree () Int] -> [Tree () Int]+ shuffleForest seed xs = runST $ do+ gen <- newSTRef (mkStdGen seed)+ H.shuffleForest gen xs++ it "shuffles a forest" $ do+ shuffleForest 2+ [Leaf 1, Leaf 2, Leaf 3] `shouldBe`+ [Leaf 3, Leaf 1, Leaf 2]++ it "recurses into Node" $ do+ shuffleForest 1+ [Node "foo" [Node "bar" [Leaf 1, Leaf 2, Leaf 3]]] `shouldBe`+ [Node "foo" [Node "bar" [Leaf 2, Leaf 3, Leaf 1]]]++ it "recurses into NodeWithCleanup" $ do+ shuffleForest 1+ [NodeWithCleanup () [NodeWithCleanup () [Leaf 1, Leaf 2, Leaf 3]]] `shouldBe`+ [NodeWithCleanup () [NodeWithCleanup () [Leaf 2, Leaf 3, Leaf 1]]]+ describe "shuffle" $ do it "shuffles a list" $ do runST $ do