1module Main (main) where
3import Data.Word (Word8, Word16, Word32, Word64)
4import GHC.Int (Int8, Int16, Int32, Int64)
11import Test.QuickCheck.Monadic (monadicIO)
13import qualified Streamly.Internal.Data.Binary.Parser as Decoder
14import qualified Streamly.Internal.Data.Binary.Stream as Encoder
15import qualified Streamly.Data.Stream as Stream
16import Streamly.Internal.Data.Parser (Parser)
19 (maximum, minimum, elem, notElem, null, product, sum, head, last, take)
21import Test.Hspec.QuickCheck
22import GHC.Base (unsafeChr)
33chooseWord8 :: (Word8, Word8) -> Gen Word8
36chooseWord16 :: (Word16, Word16) -> Gen Word16
39chooseWord32 :: (Word32, Word32) -> Gen Word32
42chooseWord64 :: (Word64, Word64) -> Gen Word64
45chooseInt8 :: (Int8, Int8) -> Gen Int8
48chooseInt16 :: (Int16, Int16) -> Gen Int16
51chooseInt32 :: (Int32, Int32) -> Gen Int32
54chooseInt64 :: (Int64, Int64) -> Gen Int64
57chooseFloat :: (Float, Float) -> Gen Float
60chooseDouble :: (Double, Double) -> Gen Double
63chooseChar :: (Char, Char) -> Gen Char
66action :: (Monad m, Eq a) =>
68 -> (a -> Stream.Stream m Word8)
73 v1 <- Stream.parse dec str
82 let str = Encoder.unit
83 v1 <- Stream.parse Decoder.unit str
91 forAll (chooseWord8 (0, 1)) $ \case
92 0 -> monadicIO $ action False Encoder.bool Decoder.bool
93 _ -> monadicIO $ action True Encoder.bool Decoder.bool
97 forAll (chooseWord8 (0, 2)) $ \case
98 0 -> monadicIO $ action LT Encoder.ordering Decoder.ordering
99 1 -> monadicIO $ action EQ Encoder.ordering Decoder.ordering
100 _ -> monadicIO $ action GT Encoder.ordering Decoder.ordering
104 forAll (chooseWord8 (0, 255)) $ \x ->
105 monadicIO $ action x Encoder.word8 Decoder.word8
109 forAll (chooseWord16 (0, word16Max)) $ \x ->
110 monadicIO $ action x Encoder.word16be Decoder.word16be
114 forAll (chooseWord32 (0, word32Max)) $ \x ->
115 monadicIO $ action x Encoder.word32be Decoder.word32be
119 forAll (chooseWord64 (0, word64Max)) $ \x ->
120 monadicIO $ action x Encoder.word64be Decoder.word64be
124 forAll (chooseWord16 (0, word16Max)) $ \x ->
125 monadicIO $ action x Encoder.word16le Decoder.word16le
129 forAll (chooseWord32 (0, word32Max)) $ \x ->
130 monadicIO $ action x Encoder.word32le Decoder.word32le
134 forAll (chooseWord64 (0, word64Max)) $ \x ->
135 monadicIO $ action x Encoder.word64le Decoder.word64le
139 forAll (chooseInt8 (-128, 127)) $ \x ->
140 monadicIO $ action x Encoder.int8 Decoder.int8
144 forAll (chooseInt16 (-32768, 32767)) $ \x ->
145 monadicIO $ action x Encoder.int16be Decoder.int16be
149 forAll (chooseInt32 (-2147483648, 2147483647)) $ \x ->
150 monadicIO $ action x Encoder.int32be Decoder.int32be
154 forAll (chooseInt64 (-9223372036854775808, 9223372036854775807)) $ \x ->
155 monadicIO $ action x Encoder.int64be Decoder.int64be
159 forAll (chooseInt16 (-32768, 32767)) $ \x ->
160 monadicIO $ action x Encoder.int16le Decoder.int16le
164 forAll (chooseInt32 (-2147483648, 2147483647)) $ \x ->
165 monadicIO $ action x Encoder.int32le Decoder.int32le
169 forAll (chooseInt64 (-9223372036854775808, 9223372036854775807)) $ \x ->
170 monadicIO $ action x Encoder.int64le Decoder.int64le
174 forAll (chooseFloat (-3.40282e+38, 3.40282e+38)) $ \x ->
175 monadicIO $ action x Encoder.float32be Decoder.float32be
179 forAll (chooseFloat (-3.40282e+38, 3.40282e+38)) $ \x ->
180 monadicIO $ action x Encoder.float32le Decoder.float32le
182double64be :: Property
184 forAll (chooseDouble (-1.79769e+308, 1.79769e+308)) $ \x ->
185 monadicIO $ action x Encoder.double64be Decoder.double64be
187double64le :: Property
189 forAll (chooseDouble (-1.79769e+308, 1.79769e+308)) $ \x ->
190 monadicIO $ action x Encoder.double64le Decoder.double64le
192charLatin1 :: Property
193charLatin1 = forAll (chooseChar (unsafeChr 0, unsafeChr 255)) $ \x ->
194 monadicIO $ action x Encoder.charLatin1 Decoder.charLatin1
197moduleName = "Serialize.Serializable"
202 describe moduleName $ do
204 prop "unit" Main.unit
207 prop "bool" Main.bool
210 prop "ordering" Main.ordering
213 prop "word8" Main.word8
214 prop "word16be" Main.word16be
215 prop "word32be" Main.word32be
216 prop "word64be" Main.word64be
217 prop "word16le" Main.word16le
218 prop "word32le" Main.word32le
219 prop "word64le" Main.word64le
222 prop "int8" Main.int8
223 prop "int16be" Main.int16be
224 prop "int32be" Main.int32be
225 prop "int64be" Main.int64be
226 prop "int16le" Main.int16le
227 prop "int32le" Main.int32le
228 prop "int64le" Main.int64le
231 prop "float32be" Main.float32be
232 prop "float32le" Main.float32le
233 prop "double64be" Main.double64be
234 prop "double64le" Main.double64le
237 prop "charLatin1" Main.charLatin1
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list