@@ -8,90 +8,12 @@ import Data.ArrayBuffer.Types
88import qualified Data.ArrayBuffer.ArrayBuffer as AB
99import qualified Data.ArrayBuffer.DataView as DV
1010import qualified Data.ArrayBuffer.Typed as TA
11- import qualified Data.ArrayBuffer.Serializer as S
12- import qualified Data.ArrayBuffer.Deserializer as D
1311import Data.ArrayBuffer.Show
1412import Control.Monad.Eff
1513import Control.Monad.Eff.Random
1614import Control.Monad.Eff.Exception
1715import Math
1816
19- newtype Comp = Comp Number
20-
21- putComp (Comp v) = S .putInt8 (Int8 v)
22-
23-
24- getComp d = do
25- v <- D .getInt8 d
26- return $ case v of
27- (Right (Int8 vv)) -> Right $ Comp vv
28- (Left err) -> Left err
29-
30- instance eqComp :: Eq Comp where
31- (==) (Comp v0) (Comp v1) = v0 == v1
32- (/=) a b = not $ a == b
33-
34- instance showComp :: Show Comp where
35- show (Comp v) = " Comp " ++ show v
36-
37- instance arbComp :: Arbitrary Comp where
38- arbitrary = uniformToComp <$> arbitrary
39- where
40- uniformToComp n = Comp $ Math .floor (n * 256 ) - 128
41-
42- data V4 = V4 Comp Comp Comp Comp
43-
44- instance eqV4 :: Eq V4 where
45- (==) (V4 x0 y0 z0 t0) (V4 x1 y1 z1 t1) = x0 == x0 && y0 == y1 && z0 == z1 && t0 == t1
46- (/=) a b = not $ a == b
47-
48- instance showV4 :: Show V4 where
49- show (V4 x y z t) = " (V4 " ++ show x ++ " " ++ show y ++ " " ++ show z ++ " " ++ show t ++ " )"
50-
51- instance arbV4 :: Arbitrary V4 where
52- arbitrary = V4 <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
53-
54-
55- putV4 (V4 x y z t) d = pure d >>= putComp x >>= putComp y >>= putComp z >>= putComp t
56-
57- getV4 d = do
58- let comp = getComp d
59- x <- comp
60- y <- comp
61- z <- comp
62- t <- comp
63- return $ V4 <$> x <*> y <*> z <*> t
64-
65- data M4 = M4 V4 V4 V4 V4
66-
67- instance eqM4 :: Eq M4 where
68- (==) (M4 x0 y0 z0 t0) (M4 x1 y1 z1 t1) = x0 == x0 && y0 == y1 && z0 == z1 && t0 == t1
69- (/=) a b = not $ a == b
70-
71- instance showM4 :: Show M4 where
72- show (M4 x y z t) = " M4 " ++ show x ++ " " ++ show y ++ " " ++ show z ++ " " ++ show t
73-
74- instance arbM4 :: Arbitrary M4 where
75- arbitrary = M4 <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
76-
77-
78- putM4 (M4 x y z t) d = pure d >>= putV4 x >>= putV4 y >>= putV4 z >>= putV4 t
79-
80- getM4 d = do
81- let v4= getV4 d
82- x <- v4
83- y <- v4
84- z <- v4
85- t <- v4
86- return $ M4 <$> x <*> y <*> z <*> t
87-
88- foreign import ut " " "
89- function ut(a) {
90- console.log(a);
91- return a;
92- }
93- " " " :: forall a . a -> a
94-
9517main :: Eff (trace :: Trace , random :: Random , err :: Exception , writer :: DV.Writer , reader :: DV.Reader ) Unit
9618main = do
9719 let ab = AB .create 4
@@ -124,34 +46,7 @@ main = do
12446
12547 assert $ [1 ,2 ,3 ] == (TA .toArray $ TA .asInt8Array $ DV .whole $ AB .fromArray [1 ,2 ,3 ])
12648
127- quickCheck short
128-
129- quickCheck serdes
130-
131- serdes :: M4 -> M4 -> M4 -> M4 -> Boolean
132- serdes m0 m1 m2 m3 = forcePure $ do
133- let a = S .serialized 256 \s -> pure s >>= putM4 m0 >>= putM4 m1 >>= putM4 m2 >>= putM4 m3
134- d <- D .deserializer a
135- let g = getM4 d
136- m0' <- g
137- m1' <- g
138- m2' <- g
139- m3' <- g
140- return $ (Right m0) == m0' && (Right m1) == m1' && (Right m2) == m2' && (Right m3) == m3'
141-
142- short :: M4 -> M4 -> Boolean
143- short m0 m1 = forcePure $ do
144- let a = S .serialized 256 \s -> putM4 m0 s
145- d <- D .deserializer a
146- let g = getM4 d
147- m0' <- g
148- m1' <- g
149- return $ m0' == (Right m0) && m1' /= (Right m1) && m1' == (Left " Short read" )
150-
151-
15249
15350assert :: Boolean -> QC Unit
15451assert = quickCheck' 1
15552
156- foreign import forcePure " function forcePure(e) { return e(); }" :: forall e . (Eff (|e ) Boolean ) -> Boolean
157-
0 commit comments