packages feed

sbv-4.3: SBVUnitTest/TestSuite/Arrays/Memory.hs

-----------------------------------------------------------------------------
-- |
-- Module      :  TestSuite.Arrays.Memory
-- Copyright   :  (c) Levent Erkok
-- License     :  BSD3
-- Maintainer  :  erkokl@gmail.com
-- Stability   :  experimental
--
-- Test suite for Examples.Arrays.Memory
-----------------------------------------------------------------------------

module TestSuite.Arrays.Memory(testSuite) where

import Examples.Arrays.Memory
import SBVTest

-- Test suite
testSuite :: SBVTestSuite
testSuite = mkTestSuite $ \_ -> test [
     "memory-raw"           ~: assert       =<< isThm t1
   , "memory-waw"           ~: assert       =<< isThm t2
   , "memory-wcommute-good" ~: assert       =<< isThm t3
   , "memory-wcommute-bad"  ~: assert . not =<< isThm t4
   ]
   where t1 = free "a" >>= \a -> free "x" >>= \x ->                                       newArray "m" Nothing >>= return . raw a x
         t2 = free "a" >>= \a -> free "x" >>= \x -> free "y" >>= \y ->                    newArray "m" Nothing >>= return . waw a x y
         t3 = free "a" >>= \a -> free "x" >>= \x -> free "b" >>= \b -> free "y" >>= \y -> newArray "m" Nothing >>= return . wcommutesGood (a, x) (b, y)
         t4 = free "a" >>= \a -> free "x" >>= \x -> free "b" >>= \b -> free "y" >>= \y -> newArray "m" Nothing >>= return . wcommutesBad  (a, x) (b, y)

{-# ANN module ("HLint: ignore Use liftM" :: String) #-}