clash-prelude-quickcheck-0.1.2.0: src/CLaSH/QuickCheck/Instances/BitVector.hs
module CLaSH.QuickCheck.Instances.BitVector () where
import Test.QuickCheck
import CLaSH.Prelude
iso1 :: Bool -> Bit
iso1 = \case False -> 0
True -> 1
iso2 :: Bit -> Bool
iso2 = \case 0 -> False
_ -> True
instance KnownNat n => Arbitrary (BitVector n) where
arbitrary = fmap pack $ sequence $ CLaSH.Prelude.repeat $ iso1 <$> arbitrary
shrink v = fmap pack vs
where vs :: [Vec n Bit]
vs = (fmap . fmap) iso1 $ sequence $ shrink <$> iso2 <$> unpack v