packages feed

hw-bits 0.7.0.9 → 0.7.1.0

raw patch · 15 files changed

+180/−2 lines, 15 filesdep +bitvecdep ~basePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: bitvec

Dependency ranges changed: base

API changes (from Hackage documentation)

+ HaskellWorks.Data.Bits.AllExcess.AllExcess0: instance HaskellWorks.Data.Bits.AllExcess.AllExcess0.AllExcess0 (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.Bits.AllExcess.AllExcess0: instance HaskellWorks.Data.Bits.AllExcess.AllExcess0.AllExcess0 (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.Bits.AllExcess.AllExcess1: instance HaskellWorks.Data.Bits.AllExcess.AllExcess1.AllExcess1 (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.Bits.AllExcess.AllExcess1: instance HaskellWorks.Data.Bits.AllExcess.AllExcess1.AllExcess1 (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.Bits.BitLength: instance HaskellWorks.Data.Bits.BitLength.BitLength (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.Bits.BitParse: instance HaskellWorks.Data.Bits.BitParse.BitParse (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.Bits.BitRead: instance HaskellWorks.Data.Bits.BitRead.BitRead (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.Bits.BitShow: instance HaskellWorks.Data.Bits.BitShow.BitShow (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.Bits.BitWise: instance HaskellWorks.Data.Bits.BitWise.TestBit (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.Bits.ElemFixedBitSize: instance HaskellWorks.Data.Bits.ElemFixedBitSize.ElemFixedBitSize (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.Bits.FromBitTextByteString: instance HaskellWorks.Data.Bits.FromBitTextByteString.FromBitTextByteString (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.Bits.FromBitTextByteString: instance HaskellWorks.Data.Bits.FromBitTextByteString.FromBitTextByteString (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
- HaskellWorks.Data.Bits.BitWise: infixl 8 .>.
+ HaskellWorks.Data.Bits.BitWise: infixl 8 .<.

Files

hw-bits.cabal view
@@ -1,7 +1,7 @@ cabal-version:  2.2  name:                   hw-bits-version:                0.7.0.9+version:                0.7.1.0 synopsis:               Bit manipulation description:            Please see README.md category:               Data, Bit@@ -28,6 +28,7 @@  common base                 { build-depends: base                 >= 4          && < 5      } +common bitvec               { build-depends: bitvec               >= 1.0        && < 1.1    } common bytestring           { build-depends: bytestring           >= 0.9        && < 0.11   } common criterion            { build-depends: criterion            >= 1.2        && < 1.6    } common deepseq              { build-depends: deepseq              >= 1.4        && < 1.5    }@@ -48,6 +49,7 @@ library   import:               base                       , common+                      , bitvec                       , bytestring                       , deepseq                       , hw-int@@ -84,6 +86,7 @@ test-suite hw-bits-test   import:               base                       , common+                      , bitvec                       , bytestring                       , hedgehog                       , hspec
src/HaskellWorks/Data/Bits/AllExcess/AllExcess0.hs view
@@ -6,7 +6,10 @@ import HaskellWorks.Data.Bits.PopCount.PopCount0 import HaskellWorks.Data.Bits.PopCount.PopCount1 +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  class AllExcess0 a where   -- | Number of 0-bits minues the number of 1-bits.@@ -48,5 +51,13 @@   {-# INLINE allExcess0 #-}  instance AllExcess0 (DVS.Vector Word64) where+  allExcess0 w = fromIntegral (popCount0 w) - fromIntegral (popCount1 w)+  {-# INLINE allExcess0 #-}++instance AllExcess0 (DVU.Vector Bit.Bit) where+  allExcess0 w = fromIntegral (popCount0 w) - fromIntegral (popCount1 w)+  {-# INLINE allExcess0 #-}++instance AllExcess0 (DVU.Vector BitTS.Bit) where   allExcess0 w = fromIntegral (popCount0 w) - fromIntegral (popCount1 w)   {-# INLINE allExcess0 #-}
src/HaskellWorks/Data/Bits/AllExcess/AllExcess1.hs view
@@ -6,8 +6,11 @@ import HaskellWorks.Data.Bits.PopCount.PopCount0 import HaskellWorks.Data.Bits.PopCount.PopCount1 +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  class AllExcess1 a where   -- | Number of 1-bits minues the number of 0-bits.@@ -66,4 +69,12 @@  instance AllExcess1 (DVS.Vector Word64) where   allExcess1 w = fromIntegral (popCount1 w) - fromIntegral (popCount0 w)+  {-# INLINE allExcess1 #-}++instance AllExcess1 (DVU.Vector Bit.Bit) where+  allExcess1 w = fromIntegral (popCount0 w) - fromIntegral (popCount1 w)+  {-# INLINE allExcess1 #-}++instance AllExcess1 (DVU.Vector BitTS.Bit) where+  allExcess1 w = fromIntegral (popCount0 w) - fromIntegral (popCount1 w)   {-# INLINE allExcess1 #-}
src/HaskellWorks/Data/Bits/BitLength.hs view
@@ -15,8 +15,11 @@ import HaskellWorks.Data.Positioning import Prelude                       hiding (length) +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  class BitLength v where   -- | Number of bits in a value including ones and zeros.@@ -127,4 +130,12 @@  instance BitLength (DVS.Vector Word64) where   bitLength v = length v * bitLength (v !!! 0)+  {-# INLINE bitLength #-}++instance BitLength (DVU.Vector Bit.Bit) where+  bitLength = fromIntegral . DVU.length+  {-# INLINE bitLength #-}++instance BitLength (DVU.Vector BitTS.Bit) where+  bitLength = fromIntegral . DVU.length   {-# INLINE bitLength #-}
src/HaskellWorks/Data/Bits/BitParse.hs view
@@ -12,9 +12,12 @@ import HaskellWorks.Data.Bits.BitWise import HaskellWorks.Data.String.Parse +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.ByteString      as BS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  -- | Parsers for bit strings class BitParse a where@@ -126,3 +129,11 @@ instance BitParse (DVS.Vector Word64) where   bitParse0 = bitParse1 <|> return DVS.empty   bitParse1 = fromList `fmap` bitParse0++instance BitParse (DVU.Vector Bit.Bit) where+  bitParse0 = bitParse1 <|> return DVU.empty+  bitParse1 = fromList . map Bit.Bit <$> many bitParse1++instance BitParse (DVU.Vector BitTS.Bit) where+  bitParse0 = bitParse1 <|> return DVU.empty+  bitParse1 = fromList . map BitTS.Bit <$> many bitParse1
src/HaskellWorks/Data/Bits/BitRead.hs view
@@ -11,9 +11,12 @@ import HaskellWorks.Data.Bits.BitParse import HaskellWorks.Data.String.Parse +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.ByteString      as BS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  -- | Bit string reader that produces a value of a type class BitRead a where@@ -77,6 +80,12 @@   bitRead = bitRead'  instance BitRead (DVS.Vector Word64) where+  bitRead = bitRead'++instance BitRead (DVU.Vector Bit.Bit) where+  bitRead = bitRead'++instance BitRead (DVU.Vector BitTS.Bit) where   bitRead = bitRead'  instance BitRead [Bool] where
src/HaskellWorks/Data/Bits/BitShow.hs view
@@ -11,10 +11,13 @@ import HaskellWorks.Data.Bits.BitWise import HaskellWorks.Data.Bits.Word +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.ByteString      as BS import qualified Data.ByteString.Lazy as BSL import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  -- | Shower of a value as a bit string class BitShow a where@@ -104,6 +107,12 @@  instance BitShow (DVS.Vector Word64) where   bitShows = bitShows . toList++instance BitShow (DVU.Vector Bit.Bit) where+  bitShows = bitShows . fmap Bit.unBit . toList++instance BitShow (DVU.Vector BitTS.Bit) where+  bitShows = bitShows . fmap BitTS.unBit . toList  bitShow :: BitShow a => a -> String bitShow a = bitShows a ""
src/HaskellWorks/Data/Bits/BitWise.hs view
@@ -17,9 +17,12 @@ import HaskellWorks.Data.Positioning import Prelude                          as P +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Bits            as B import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  -- We pervasively use precedence to avoid excessive parentheses, and we use -- the same precedence conventions of the C programming language: arithmetic@@ -139,6 +142,14 @@  instance TestBit (DVS.Vector Word64) where   (.?.) v n = let (q, r) = n `quotRem` elemBitEnd v in (v !!! q) .?. r+  {-# INLINE (.?.) #-}++instance TestBit (DVU.Vector Bit.Bit) where+  (.?.) v n = Bit.unBit (v DVU.! fromIntegral n)+  {-# INLINE (.?.) #-}++instance TestBit (DVU.Vector BitTS.Bit) where+  (.?.) v n = BitTS.unBit (v DVU.! fromIntegral n)   {-# INLINE (.?.) #-}  instance BitWise Int where
src/HaskellWorks/Data/Bits/ElemFixedBitSize.hs view
@@ -8,8 +8,11 @@ import Data.Word import HaskellWorks.Data.Positioning +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  -- | Class of values that have elements of a fixed bit size --@@ -83,3 +86,11 @@ instance ElemFixedBitSize (DVS.Vector Word64) where   type Elem (DVS.Vector Word64) = Word64   elemFixedBitSize _ = 64++instance ElemFixedBitSize (DVU.Vector Bit.Bit) where+  type Elem (DVU.Vector Bit.Bit) = Bit.Bit+  elemFixedBitSize _ = 1++instance ElemFixedBitSize (DVU.Vector BitTS.Bit) where+  type Elem (DVU.Vector BitTS.Bit) = BitTS.Bit+  elemFixedBitSize _ = 1
src/HaskellWorks/Data/Bits/FromBitTextByteString.hs view
@@ -8,8 +8,11 @@ import Data.Word import HaskellWorks.Data.Bits +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.ByteString      as BS import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  class FromBitTextByteString a where   -- | Convert a binary byte string to a value of type @a@@ -86,6 +89,26 @@                 Just (d, ds) | d == w1  -> gen' (n + 1) (w .|. (1 .<. fromIntegral n)) ds                 Just (_, ds) -> gen' n w ds                 Nothing      -> Just (w, cs)++instance FromBitTextByteString (DVU.Vector Bit.Bit) where+  fromBitTextByteString :: BS.ByteString -> DVU.Vector Bit.Bit+  fromBitTextByteString bs = DVU.unfoldrN (BS.length bs) gen bs+    where gen :: BS.ByteString -> Maybe (Bit.Bit, BS.ByteString)+          gen cs = case BS.uncons cs of+            Just (d, ds) | d == w0  -> Just (Bit.Bit False, ds)+            Just (d, ds) | d == w1  -> Just (Bit.Bit True,  ds)+            Just (_, ds) -> gen ds+            Nothing      -> Nothing++instance FromBitTextByteString (DVU.Vector BitTS.Bit) where+  fromBitTextByteString :: BS.ByteString -> DVU.Vector BitTS.Bit+  fromBitTextByteString bs = DVU.unfoldrN (BS.length bs) gen bs+    where gen :: BS.ByteString -> Maybe (BitTS.Bit, BS.ByteString)+          gen cs = case BS.uncons cs of+            Just (d, ds) | d == w0  -> Just (BitTS.Bit False, ds)+            Just (d, ds) | d == w1  -> Just (BitTS.Bit True,  ds)+            Just (_, ds) -> gen ds+            Nothing      -> Nothing  w0 :: Word8 w0 = 48
src/HaskellWorks/Data/Bits/PopCount/PopCount0.hs view
@@ -14,8 +14,11 @@ import HaskellWorks.Data.Positioning import Prelude                                   as P +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  class PopCount0 v where   -- | The number of 0-bits in the value.@@ -176,4 +179,12 @@  instance PopCount0 (DVS.Vector (Broadword Word64)) where   popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0+  {-# INLINE popCount0 #-}++instance PopCount0 (DVU.Vector Bit.Bit) where+  popCount0 v = fromIntegral $ DVU.length v - Bit.countBits v+  {-# INLINE popCount0 #-}++instance PopCount0 (DVU.Vector BitTS.Bit) where+  popCount0 v = fromIntegral $ DVU.length v - BitTS.countBits v   {-# INLINE popCount0 #-}
src/HaskellWorks/Data/Bits/PopCount/PopCount1.hs view
@@ -12,9 +12,12 @@ import HaskellWorks.Data.Positioning import Prelude                                as P +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Bits            as DB import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  type FastWord a = Builtin a @@ -197,4 +200,12 @@  instance PopCount1 (DVS.Vector (Broadword Word64)) where   popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0+  {-# INLINE popCount1 #-}++instance PopCount1 (DVU.Vector Bit.Bit) where+  popCount1 = fromIntegral . Bit.countBits+  {-# INLINE popCount1 #-}++instance PopCount1 (DVU.Vector BitTS.Bit) where+  popCount1 = fromIntegral . BitTS.countBits   {-# INLINE popCount1 #-}
test/HaskellWorks/Data/Bits/BitReadSpec.hs view
@@ -11,7 +11,9 @@ import Hedgehog import Test.Hspec -import qualified Data.Vector as DV+import qualified Data.Bit            as Bit+import qualified Data.Vector         as DV+import qualified Data.Vector.Unboxed as DVU  {-# ANN module ("HLint: Ignore Redundant do" :: String) #-} @@ -29,6 +31,7 @@   it "bitRead \"\" :: Maybe [Word8]" . requireTest $ do     let ws = bitRead "" :: Maybe [Word8]     ws === Just []+   it "bitRead \"10000000 101\" :: Maybe (DV.Vector Word8)" . requireTest $ do     let v = bitRead "10000000 101" :: Maybe (DV.Vector Word8)     v === Just [1, 5]@@ -41,6 +44,20 @@   it "bitRead \"\" :: Maybe (DV.Vector Word8)" . requireTest $ do     let v = bitRead "" :: Maybe (DV.Vector Word8)     v === Just []++  it "bitRead \"10000000 101\" :: Maybe (DVU.Vector Bit.Bit)" . requireTest $ do+    let v = bitRead "10000000 101" :: Maybe (DVU.Vector Bit.Bit)+    v === Just [1,0,0,0,0,0,0,0, 1,0,1]+  it "bitRead \"11100100 10101111 1\" :: Maybe (DVU.Vector Bit.Bit)" . requireTest $ do+    let v = bitRead "11100100 10101111 1" :: Maybe (DVU.Vector Bit.Bit)+    v === Just [1,1,1,0,0,1,0,0, 1,0,1,0,1,1,1,1, 1]+  it "bitRead \"11100100 10101111 1\" :: Maybe (DVU.Vector Bit.Bit)" . requireTest $ do+    let v = bitRead "11100100 10101111 1" :: Maybe (DVU.Vector Bit.Bit)+    v === Just [1,1,1,0,0,1,0,0, 1,0,1,0,1,1,1,1, 1]+  it "bitRead \"\" :: Maybe (DVU.Vector Bit.Bit)" . requireTest $ do+    let v = bitRead "" :: Maybe (DVU.Vector Bit.Bit)+    v === Just []+   it "bitShow (8 :: Word8)" . requireTest $ do     let bs = bitShow (8 :: Word8)     bs === "00010000"
test/HaskellWorks/Data/Bits/BitWiseSpec.hs view
@@ -10,8 +10,10 @@ import Hedgehog import Test.Hspec +import qualified Data.Bit             as Bit import qualified Data.Bits            as B import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU import qualified Hedgehog.Gen         as G import qualified Hedgehog.Range       as R @@ -56,6 +58,9 @@     it "for [Word64] matches Data.Bits implementation" $ requireProperty $ do       w <- forAll $ G.list (R.constant 0 10) (G.word64 R.constantBounded)       popCount0 w === popCount0 (DVS.fromList w)+    it "for [Bool] matches DVU Bit.Bit" $ requireProperty $ do+      w <- forAll $ G.list (R.constant 0 1000) G.bool+      popCount0 w === popCount0 (DVU.fromList (fmap Bit.Bit w))   describe "for popCount1" $ do     it "for Word8 matches Data.Bits implementation" $ requireProperty $ do       w <- forAll $ G.word8 R.constantBounded@@ -93,3 +98,6 @@     it "for [Word64] matches Data.Bits implementation" $ requireProperty $ do       w <- forAll $ G.list (R.constant 0 10) (G.word64 R.constantBounded)       popCount1 w === popCount1 (DVS.fromList w)+    it "for [Bool] matches DVU Bit.Bit" $ requireProperty $ do+      w <- forAll $ G.list (R.constant 0 1000) G.bool+      popCount1 w === popCount1 (DVU.fromList (fmap Bit.Bit w))
test/HaskellWorks/Data/Bits/FromBitTextByteStringSpec.hs view
@@ -12,8 +12,10 @@ import Hedgehog import Test.Hspec +import qualified Data.Bit             as Bit import qualified Data.ByteString      as BS import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  {-# ANN module ("HLint: Ignore Redundant do" :: String) #-} @@ -95,3 +97,22 @@     it "fromBitTextByteString (BS.unpack \"11110000111100001111000011110000111100001111000011110000111100001\") :: DVS.Vector Word64" . requireTest $ do       let w = fromBitTextByteString "11110000111100001111000011110000111100001111000011110000111100001" :: DVS.Vector Word64       w === DVS.fromList [0x0f0f0f0f0f0f0f0f, 0x1]+  describe "For (DVU.Vector Bit.Bit)" $ do+    it "fromBitTextByteString (BS.unpack []) :: DVU.Vector Bit.Bit" . requireTest $ do+      let w = fromBitTextByteString (BS.pack []) :: DVU.Vector Bit.Bit+      w === DVU.fromList []+    it "fromBitTextByteString (BS.unpack \"0\") :: DVU.Vector Bit.Bit" . requireTest $ do+      let w = fromBitTextByteString "0" :: DVU.Vector Bit.Bit+      w === DVU.fromList [0]+    it "fromBitTextByteString (BS.unpack \"1\") :: DVU.Vector Bit.Bit" . requireTest $ do+      let w = fromBitTextByteString "1" :: DVU.Vector Bit.Bit+      w === DVU.fromList [1]+    it "fromBitTextByteString (BS.unpack \"1111000011110000111100001111000011110000111100001111000011110000\") :: DVU.Vector Bit.Bit" . requireTest $ do+      let w = fromBitTextByteString "1111000011110000111100001111000011110000111100001111000011110000" :: DVU.Vector Bit.Bit+      w === DVU.fromList [1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0]+    it "fromBitTextByteString (BS.unpack \"11110000111100001111000011110000111100001111000011110000111100000\") :: DVU.Vector Bit.Bit" . requireTest $ do+      let w = fromBitTextByteString "11110000111100001111000011110000111100001111000011110000111100000" :: DVU.Vector Bit.Bit+      w === DVU.fromList [1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0]+    it "fromBitTextByteString (BS.unpack \"11110000111100001111000011110000111100001111000011110000111100001\") :: DVU.Vector Bit.Bit" . requireTest $ do+      let w = fromBitTextByteString "11110000111100001111000011110000111100001111000011110000111100001" :: DVU.Vector Bit.Bit+      w === DVU.fromList [1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1]