rio-0.1.0.0: test/RIO/PreludeSpec.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module RIO.PreludeSpec (spec) where
import Test.Hspec
import RIO
spec :: Spec
spec = do
describe "URef" $ do
it "sanity" $ do
ref <- newURef (0 :: Int)
x <- readURef ref
x `shouldBe` 0
writeURef ref 1
y <- readURef ref
y `shouldBe` 1
modifyURef ref (+ 1)
z <- readURef ref
z `shouldBe` 2
describe "whenM" $ do
it "returns True" $ do
ref <- newIORef False
whenM (return True) (writeIORef ref True)
readIORef ref `shouldReturn` True
it "returns False" $ do
ref <- newIORef False
whenM (return False) (writeIORef ref True)
readIORef ref `shouldReturn` False
describe "unlessM" $ do
it "returns True" $ do
ref <- newIORef False
unlessM (return True) (writeIORef ref True)
readIORef ref `shouldReturn` False
it "returns False" $ do
ref <- newIORef False
unlessM (return False) (writeIORef ref True)
readIORef ref `shouldReturn` True