7
7
{-# LANGUAGE FlexibleInstances ,CPP #-}
8
8
{-# LANGUAGE LambdaCase ,ScopedTypeVariables #-}
9
9
module Test where
10
- import Data.Binary.FloatCast
11
10
import qualified Data.ByteString as B
12
11
import qualified Data.ByteString.Lazy as L
13
12
import qualified Data.ByteString.Short.Internal as SBS
14
13
import Data.Coerce
15
14
import Data.Flat
16
- import Data.Flat.Peek
17
15
import Data.Flat.Decoder
18
- import Data.Flat.Pretty
19
16
import Data.Int
20
17
import qualified Data.Sequence as S
21
18
import qualified Data.Text as T
22
- import Data.Word
23
19
import Prelude hiding (exponent , sign )
24
20
import System.Endian
25
21
import Text.Printf
26
22
import Data.Flat.Bits
27
23
import qualified Data.Map as M
24
+ import Data.FloatCast
25
+ -- import qualified Data.ByteString as B
26
+ -- import qualified Data.ByteString.Lazy as L
27
+ import Data.Word
28
+ import Text.PrettyPrint.HughesPJClass
29
+ -- import Text.Printf
28
30
29
31
instance Flat [Word16 ]
30
32
instance Flat [Int16 ]
@@ -33,8 +35,11 @@ instance Flat [Word8]
33
35
instance Flat [(Word64 ,Word16 )]
34
36
instance Flat [ABC ]
35
37
38
+ -- u :: B.ByteString
39
+ u = unflatWith (dBEBits8 3 ) [128 + 64 + 32 + 1 :: Word8 ]
40
+
36
41
m1 = M. fromList [(False ,True )]
37
- mmm = (size m1 0 ,bits m1, unflat $ flat m1 :: Decoded (M. Map Bool Bool ))
42
+ mmm = (size m1 0 ,bits m1, unflatRaw $ flat m1 :: Decoded (M. Map Bool Bool ))
38
43
39
44
-- deriving instance {-# OVERLAPPABLE #-} Flat a => Flat [a]
40
45
-- instance Flat a => Flat [a]
@@ -73,7 +78,7 @@ newtype A = A Bool
73
78
newtype B = B Bool
74
79
data C = C Bool
75
80
76
- kkk = [[127 ,1 ],[128 ,1 ,1 ],[129 ,1 ,1 ],[255 ,127 ,1 ],[128 ,128 ,1 ,1 ],[129 ,128 ,1 ,1 ],[255 ,255 ,1 ,1 ],[128 ,128 ,2 ,1 ],[129 ,128 ,2 ,1 ],[255 ,255 ,127 ,1 ],[128 ,128 ,128 ,1 ,1 ],[129 ,128 ,128 ,1 ,1 ]] == map (L . unpack . flat) [127 :: Word32 ,128 ,129 ,16383 ,16384 ,16385 ,32767 ,32768 ,32769 ,2097151 ,2097152 ,2097153 ]
81
+ kkk = [[127 ,1 ],[128 ,1 ,1 ],[129 ,1 ,1 ],[255 ,127 ,1 ],[128 ,128 ,1 ,1 ],[129 ,128 ,1 ,1 ],[255 ,255 ,1 ,1 ],[128 ,128 ,2 ,1 ],[129 ,128 ,2 ,1 ],[255 ,255 ,127 ,1 ],[128 ,128 ,128 ,1 ,1 ],[129 ,128 ,128 ,1 ,1 ]] == map (B . unpack . flat) [127 :: Word32 ,128 ,129 ,16383 ,16384 ,16385 ,32767 ,32768 ,32769 ,2097151 ,2097152 ,2097153 ]
77
82
78
83
-- qqq = size N4 0 + size N5 0
79
84
@@ -145,7 +150,7 @@ n1 = Node (Node (Leaf 11) (Leaf 22)) (Node (Leaf 33) (Leaf 44))
145
150
-- [240,88,90,33,22,96,176,180,66,44,224,176,180,66,44,193,97,104,132,89]
146
151
n2 = Node (Node n1 n1) (Node (Node n1 n1) n1)
147
152
148
- u = pp $ WW 11 22 33 44 True
153
+ u4 = pp $ WW 11 22 33 44 True
149
154
uu = pp (11 :: Word32 ,22 :: Word64 ,33 :: Word64 )
150
155
-- o = encodings $ postAligned $ T2 (11::Word32) (22::Word64)
151
156
ww = unflat (flat (0 :: Word16 )) :: Decoded Word16
@@ -201,7 +206,7 @@ y11 =show __GLASGOW_HASKELL__
201
206
pp :: forall a . (Flat a , Show a ) => a -> IO ()
202
207
-- pp v = putStrLn (unwords [show v,"->",show (size :: Size a),show $ getSize (postAligned v),show $ encode v,"->",show $ L.unpack $ flat v])
203
208
-- pp v = putStrLn (unwords [show v,"->",show (size :: Size a),show $ getSize v,show $ encode v,"->",show $ L.unpack $ flat v])
204
- pp v = putStrLn (unwords [show v," ->" ,show $ getSize v,show $ encode v," ->" ,show $ L. unpack $ flat v])
209
+ pp v = putStrLn (unwords [show v," ->" ,show $ getSize v,show $ encode v," ->" ,show $ flat v])
205
210
206
211
-- gg :: Flat a => a -> Vector Bool
207
212
gg = bits . flat $ " abc"
@@ -213,7 +218,9 @@ bs = [32,32,32::Word8]
213
218
214
219
-- px v = putStrLn (unwords [show v,"->",show $ encode v,"->",show $ L.unpack $ flatRaw (T2 v FillerEnd)])
215
220
216
- px v = let bs = L. unpack $ flat v in putStrLn (unwords [show v," ->" ,show $ encode v," ->" ,show bs,show $ sum bs])
221
+ -- px :: Flat a => a -> IO ()
222
+ px v = let bs = B. unpack $ flat v
223
+ in putStrLn (unwords [show v," ->" ,show $ encode v," ->" ,show bs,show $ sum bs])
217
224
218
225
pf v = putStrLn (unwords [show v," ->" ,show $ flat v])
219
226
@@ -225,61 +232,61 @@ ll = flat [True,False,True]
225
232
226
233
f3 = doubleToWord 1
227
234
228
- f2 = flat (1 :: Double )
235
+ f2 = flat(1 :: Double )
229
236
230
- kk = flat [(55 :: Word64 ,18 :: Word16 ),(5599 :: Word64 ,1122 :: Word16 )]
237
+ kk = flat[(55 :: Word64 ,18 :: Word16 ),(5599 :: Word64 ,1122 :: Word16 )]
231
238
-- tt = encode [(55::Word64,18::Word16,True,AA)]
232
239
e1 = encode (True ,False ) -- (AA,BB)
233
240
e2 = encode [AA ,BB ]
234
241
e3 = encode [True ,False ]
235
242
e4 = encode $ DD True True
236
243
-- e5 = encode $ ZZ (ZZ (ZZ (DD True True)))
237
244
238
- m = runGetStrict getChunksInfo $ B. pack [3 ,11 ,22 ,33 ,2 ,11 ,22 ,0 ]
245
+ -- m = runGetStrict getChunksInfo $ B.pack [3,11,22,33,2,11,22,0]
239
246
240
- m2 = B. unpack <$> runGetStrict dByteString_ (B. pack [3 ,11 ,22 ,33 ,2 ,11 ,22 ,0 ])
241
- m3 = SBS. unpack <$> runGetStrict dShortByteString_ (B. pack [3 ,11 ,22 ,33 ,2 ,11 ,22 ,0 ])
242
- m4 = unflat (flat (T. pack " abc" )) :: Decoded T. Text
247
+ -- m2 = B.unpack <$> runGetStrict dByteString_ (B.pack [3,11,22,33,2,11,22,0])
248
+ -- m3 = SBS.unpack <$> runGetStrict dShortByteString_ (B.pack [3,11,22,33,2,11,22,0])
249
+ -- m4 = unflat (flat(T.pack "abc")) :: Decoded T.Text
243
250
m5 = unflat (flat '经') :: Decoded Char
244
251
245
252
{-# NOINLINE tup2 #-}
246
- tup2 a b = flat (a,b)
253
+ tup2 a b = flat(a,b)
247
254
-- t = coerce (1::Word32) :: Float
248
- -- b = L.unpack $ flat $ B.pack $ replicate 250 33
249
- b = L. unpack $ flat $ (11 :: Word8 ,SBS.toShort $ B.replicate 400 33 ) -- [1..255] B.pack bs
255
+ -- b = L.unpack $ flat$ B.pack $ replicate 250 33
256
+ -- b = L.unpack $ flat$ (11::Word8,SBS.toShort $ B.replicate 400 33) -- [1..255] B.pack bs
250
257
251
- w = L. unpack $ flat (2 :: Word16 ,2 :: Word32 ,2 :: Word64 )
258
+ -- w = L.unpack $ flat(2::Word16,2::Word32,2::Word64)
252
259
253
- l = L. unpack $ flat [1 :: Word16 ,1 ,1 ]
260
+ -- l = L.unpack $ flat[1::Word16,1,1]
254
261
255
- j = L. unpack $ flat " abc"
262
+ -- j = L.unpack $ flat "abc"
256
263
257
- js = L. unpack $ flat (S. fromList " abc" )
264
+ -- js = L.unpack $ flat(S.fromList "abc")
258
265
259
- jj = L. unpack $ flat $ (11 :: Word8 ,T.pack " \x1F600 \& 000aaa维维aaa" )
266
+ -- jj = L.unpack $ flat$ (11::Word8,T.pack "\x1F600\&000aaa维维aaa")
260
267
261
- jl = T. length (T. pack " \x1F600 \& \x1F600 \& " )
268
+ -- jl = T.length (T.pack "\x1F600\&\x1F600\&")
262
269
263
270
q :: Decoded T. Text
264
- q = unflat $ flat (T. pack " D\226\FS tz\GS 3]\n 8\149sV\243J\181\181\235\214&y\226\231\& 2\239\212\174\DC1 J'F\129hpsu\199\178" )
271
+ q = unflat $ flat(T. pack " D\226\FS tz\GS 3]\n 8\149sV\243J\181\181\235\214&y\226\231\& 2\239\212\174\DC1 J'F\129hpsu\199\178" )
265
272
266
273
g = let v = (- 1 :: Int16 ,255 :: Word8 ,False ,- 1 :: Int16 ,1 :: Word8 ,0 :: Word8 ,False )
267
274
in (unflat (flat v) == Right v,bits v)
268
275
269
276
g1 :: Decoded (Bool ,Bool ,Bool ,Bool )
270
- g1 = unflat $ flat (True ,False ,True ,True )
277
+ g1 = unflat $ flat(True ,False ,True ,True )
271
278
272
279
g2 :: Decoded (Bool ,Word8 ,Word8 ,Bool )
273
- g2 = unflat $ flat (False ,1 :: Word8 ,1 :: Word8 ,False )
280
+ g2 = unflat $ flat(False ,1 :: Word8 ,1 :: Word8 ,False )
274
281
275
282
g3 :: Decoded Word8
276
- g3 = unflat $ flat (0 :: Word8 )
283
+ g3 = unflat $ flat(0 :: Word8 )
277
284
278
285
g4 :: Decoded (Bool ,Word8 ,Bool )
279
- g4 = unflat $ flat (False ,0 :: Word8 ,False )
286
+ g4 = unflat $ flat(False ,0 :: Word8 ,False )
280
287
281
288
g5 :: Decoded (Float ,Double ,Bool ,Float ,Double ,Bool )
282
- g5 = unflat $ flat (8.11E-11 :: Float ,8.11E-11 :: Double ,True ,8.11E-11 :: Float ,8.11E-11 :: Double ,True )
289
+ g5 = unflat $ flat(8.11E-11 :: Float ,8.11E-11 :: Double ,True ,8.11E-11 :: Float ,8.11E-11 :: Double ,True )
283
290
284
291
f0 = bits ((False ,255 :: Word8 ,False ,255 :: Word8 ))
285
292
f = bits (False ,0 :: Word8 ,False )
@@ -296,20 +303,31 @@ d = prettyLBS $ flatRaw (3/0::Double)
296
303
s = serRaw (True ,False ,True )
297
304
298
305
z = bits $ (True ,False ,True )
299
- zz = L. unpack . flat $ (True ,False ,True )
306
+ zz = flat (True ,False ,True )
300
307
301
308
serRaw :: Flat a => a -> [Word8 ]
302
309
-- serRaw = L.unpack . flatRaw
303
310
serRaw = asBytes . bits
304
311
305
312
y :: Decoded Float
306
- y = unflat $ flat (- 0.15625 :: Double )
313
+ y = unflat $ flat(- 0.15625 :: Double )
307
314
308
315
-- i :: Decoded IEEE_754_binary32
309
- -- i = unflat $ flat (-0.15625::Float)
316
+ -- i = unflat $ flat(-0.15625::Float)
310
317
311
318
-- t = i == Right (IEEE_754_binary32 {sign = V1, exponent = Bits8 V0 V1 V1 V1 V1 V1 V0 V0, fraction = (Bits7 V0 V1 V0 V0 V0 V0 V0,Bits8 V0 V0 V0 V0 V0 V0 V0 V0,Bits8 V0 V0 V0 V0 V0 V0 V0 V0)})
312
319
bb = 0b111
313
320
314
321
c = (isInfinite (3 / 0 ),isNegativeZero (- 0 :: Double ),isNaN (0 / 0 :: Float ),(0 / 0 :: Float )== (0 / 0 :: Float ))
315
322
323
+ prettyLBS :: L. ByteString -> String
324
+ prettyLBS = render . prettyBL . L. unpack
325
+
326
+ prettyBS :: B. ByteString -> String
327
+ prettyBS = render . prettyBL . B. unpack
328
+
329
+ prettyBL :: [Word8 ] -> Doc
330
+ prettyBL = text . unwords . map prettyWord8
331
+
332
+ prettyWord8 :: Word8 -> String
333
+ prettyWord8 = printf " %08b"
0 commit comments