git.iko.soy/rowtype-yoga/purescript-arraybuffer-builder
on v1.0.0 help sign in
82 lines 2.4 kB history raw
1module Test.Main where
3import Prelude (Unit, bind, pure, discard, map, negate, ($), (<$>), (=<<), (<>))
4import Data.ArrayBuffer.Types (ArrayBuffer,Uint8Array)
5import Data.ArrayBuffer.Typed as AT
6import Data.UInt as UInt
7import Effect (Effect)
8import Test.Assert (assertEqual')
9import Data.ArrayBuffer.Builder
11asBytes :: ArrayBuffer -> Effect (Array Int)
12asBytes x = do
13 x' :: Uint8Array <- AT.whole x
14 map UInt.toInt <$> AT.toArray x'
16putTest :: String -> Array Int -> PutM Effect Unit -> Effect Unit
17putTest label expected put = do
18 actual <- asBytes =<< execPut put
19 assertEqual' label {actual,expected}
21buildTest :: String -> Array Int -> Effect Builder -> Effect Unit
22buildTest label expected bldr = do
23 actual <- asBytes =<< execBuilder =<< bldr
24 assertEqual' label {actual,expected}
26main :: Effect Unit
27main = do
28 putTest "Test 0" [6,7,8] $ do
29 putInt8 6
30 putInt8 7
31 putInt8 8
33 putTest "Test 1" [255,254] $ do
34 putInt16be (-2)
36 putTest "Test 3" [3,0,0,0] $ do
37 putInt32le 3
39 buildTest "Test 4" [1,2,3,4] $ do
40 b1 <- encodeInt8 1
41 b2 <- encodeInt8 2
42 b3 <- encodeInt8 3
43 b4 <- encodeInt8 4
44 pure $ singleton b1 <> singleton b2 <> singleton b3 <> singleton b4
46 buildTest "Test 5" [1,2,3,4] $ do
47 b1 <- encodeInt8 1
48 b2 <- encodeInt8 2
49 b3 <- encodeInt8 3
50 b4 <- encodeInt8 4
51 pure $ singleton b1 <>> singleton b2 <>> singleton b3 <>> singleton b4
53 buildTest "Test 6" [1,2,3,4] $ do
54 b1 <- encodeInt8 1
55 b2 <- encodeInt8 2
56 b3 <- encodeInt8 3
57 b4 <- encodeInt8 4
58 pure $ singleton b1 <> (singleton b2 <> singleton b3) <> singleton b4
60 buildTest "Test 6" [1,2,3,4,5,6,7,8] $ do
61 b1 <- encodeInt8 1
62 b2 <- encodeInt8 2
63 b3 <- encodeInt8 3
64 b4 <- encodeInt8 4
65 b5 <- encodeInt8 5
66 b6 <- encodeInt8 6
67 b7 <- encodeInt8 7
68 b8 <- encodeInt8 8
69 pure $ singleton b1 <> (singleton b2 <> singleton b3) <> singleton b4
70 <> singleton b5 <> (singleton b6 <> singleton b7) <> singleton b8
72 buildTest "Test 7" [1,2,3,4,5,6,7,8] $ do
73 b1 <- encodeInt8 1
74 b2 <- encodeInt8 2
75 b3 <- encodeInt8 3
76 b4 <- encodeInt8 4
77 b5 <- encodeInt8 5
78 b6 <- encodeInt8 6
79 b7 <- encodeInt8 7
80 b8 <- encodeInt8 8
81 pure $ ((singleton b1 <> singleton b2) <> (singleton b3 <> singleton b4))
82 <> ((singleton b5 <> singleton b6) <> (singleton b7 <> singleton b8))