@@ -2,23 +2,18 @@ module Test.Main where
22
33import Prelude
44
5+import Control.Monad.Rec.Class (Step(..), tailRecM)
56import Control.Monad.Writer.Trans (tell)
67import Data.Array (foldRecM)
78import Data.Array as Array
8−import Data.ArrayBuffer.ArrayBuffer (byteLength)
9−import Data.ArrayBuffer.Builder (Builder, DataBuff(..), PutM, execPut, putArrayBuffer, putInt16be, putInt32be, putInt32le, putInt8, subBuilder)
9+import Data.ArrayBuffer.Builder (Builder, DataBuff(..), PutM, execPut, putInt16be, putInt32le, putInt8, subBuilder)
1010import Data.ArrayBuffer.Builder.Internal (cons, encodeInt8, execBuilder, length, singleton, (<>>))
1111import Data.ArrayBuffer.DataView as DV
12−import Data.ArrayBuffer.Typed (buffer)
1312import Data.ArrayBuffer.Typed as AT
14−import Data.ArrayBuffer.Typed as AV
15−import Data.ArrayBuffer.Types (ArrayBuffer, Uint8Array, Int8Array)
13+import Data.ArrayBuffer.Types (ArrayBuffer, Uint8Array)
1614import Data.UInt as UInt
1715import Effect (Effect)
18−import Effect.Class (class MonadEffect, liftEffect)
1916import Test.Assert (assertEqual')
20−import Web.Encoding.TextEncoder (encode)
21−import Web.Encoding.TextEncoder as TextEncoder
2217
2318asBytes :: ArrayBuffer -> Effect (Array Int)
2419asBytes x = do
@@ -28,48 +23,48 @@ asBytes x = do
2823putTest :: String -> Array Int -> PutM Effect Unit -> Effect Unit
2924putTest label expected put = do
3025 actual <- asBytes =<< execPut put
31− assertEqual' label { actual, expected }
26+ assertEqual' label {actual,expected}
3227
3328buildTest :: String -> Array Int -> Effect Builder -> Effect Unit
3429buildTest label expected bldr = do
3530 actual <- asBytes =<< execBuilder =<< bldr
36− assertEqual' label { actual, expected }
31+ assertEqual' label {actual,expected}
3732
3833main :: Effect Unit
3934main = do
40− putTest "Test 0" [ 6, 7, 8 ] do
35+ putTest "Test 0" [6,7,8] do
4136 putInt8 6
4237 putInt8 7
4338 putInt8 8
4439
45− putTest "Test 1" [ 255, 254 ] do
40+ putTest "Test 1" [255,254] do
4641 putInt16be (-2)
4742
48− putTest "Test 3" [ 3, 0, 0, 0 ] do
43+ putTest "Test 3" [3,0,0,0] do
4944 putInt32le 3
5045
51− buildTest "Test 4" [ 1, 2, 3, 4 ] do
46+ buildTest "Test 4" [1,2,3,4] do
5247 b1 <- Buff <$> encodeInt8 1
5348 b2 <- Buff <$> encodeInt8 2
5449 b3 <- Buff <$> encodeInt8 3
5550 b4 <- Buff <$> encodeInt8 4
5651 pure $ singleton b1 <> singleton b2 <> singleton b3 <> singleton b4
5752
58− buildTest "Test 5" [ 1, 2, 3, 4 ] do
53+ buildTest "Test 5" [1,2,3,4] do
5954 b1 <- Buff <$> encodeInt8 1
6055 b2 <- Buff <$> encodeInt8 2
6156 b3 <- Buff <$> encodeInt8 3
6257 b4 <- Buff <$> encodeInt8 4
6358 pure $ singleton b1 <>> singleton b2 <>> singleton b3 <>> singleton b4
6459
65− buildTest "Test 6" [ 1, 2, 3, 4 ] do
60+ buildTest "Test 6" [1,2,3,4] do
6661 b1 <- Buff <$> encodeInt8 1
6762 b2 <- Buff <$> encodeInt8 2
6863 b3 <- Buff <$> encodeInt8 3
6964 b4 <- Buff <$> encodeInt8 4
7065 pure $ singleton b1 <> (singleton b2 <> singleton b3) <> singleton b4
7166
72− buildTest "Test 6" [ 1, 2, 3, 4, 5, 6, 7, 8 ] do
67+ buildTest "Test 6" [1,2,3,4,5,6,7,8] do
7368 b1 <- Buff <$> encodeInt8 1
7469 b2 <- Buff <$> encodeInt8 2
7570 b3 <- Buff <$> encodeInt8 3
@@ -79,11 +74,9 @@ main = do
7974 b7 <- Buff <$> encodeInt8 7
8075 b8 <- Buff <$> encodeInt8 8
8176 pure $ singleton b1 <> (singleton b2 <> singleton b3) <> singleton b4
82− <> singleton b5
83− <> (singleton b6 <> singleton b7)
84− <> singleton b8
77+ <> singleton b5 <> (singleton b6 <> singleton b7) <> singleton b8
8578
86− buildTest "Test 7" [ 1, 2, 3, 4, 5, 6, 7, 8 ] do
79+ buildTest "Test 7" [1,2,3,4,5,6,7,8] do
8780 b1 <- Buff <$> encodeInt8 1
8881 b2 <- Buff <$> encodeInt8 2
8982 b3 <- Buff <$> encodeInt8 3
@@ -93,16 +86,16 @@ main = do
9386 b7 <- Buff <$> encodeInt8 7
9487 b8 <- Buff <$> encodeInt8 8
9588 pure $ ((singleton b1 <> singleton b2) <> (singleton b3 <> singleton b4))
96− <> ((singleton b5 <> singleton b6) <> (singleton b7 <> singleton b8))
89+ <> ((singleton b5 <> singleton b6) <> (singleton b7 <> singleton b8))
9790
98− buildTest "Test 8" [ 1, 2, 3, 4 ] do
91+ buildTest "Test 8" [1,2,3,4] do
9992 b1 <- Buff <$> encodeInt8 1
10093 b2 <- Buff <$> encodeInt8 2
10194 b3 <- Buff <$> encodeInt8 3
10295 b4 <- Buff <$> encodeInt8 4
10396 pure $ (cons b1 (singleton b2)) <> (cons b3 (singleton b4))
10497
105− putTest "Test 9" [ 1, 2, 2, 3, 4 ] do
98+ putTest "Test 9" [1,2,2,3,4] do
10699 x <- subBuilder do
107100 putInt8 3
108101 putInt8 4
@@ -111,7 +104,7 @@ main = do
111104 putInt8 $ length x
112105 tell x
113106
114− buildTest "Test 10" [ 1, 2, 3, 4, 5, 6, 7, 8 ] do
107+ buildTest "Test 10" [1,2,3,4,5,6,7,8] do
115108 b1 <- View <$> DV.whole <$> encodeInt8 1
116109 b2 <- View <$> DV.whole <$> encodeInt8 2
117110 b3 <- View <$> DV.whole <$> encodeInt8 3
@@ -121,26 +114,8 @@ main = do
121114 b7 <- View <$> DV.whole <$> encodeInt8 7
122115 b8 <- View <$> DV.whole <$> encodeInt8 8
123116 pure $ ((singleton b1 <> singleton b2) <> (singleton b3 <> singleton b4))
124− <> ((singleton b5 <> singleton b6) <> (singleton b7 <> singleton b8))
117+ <> ((singleton b5 <> singleton b6) <> (singleton b7 <> singleton b8))
125118
126119 let stackblower = Array.replicate 20000 2
127120 putTest "Stack test" stackblower do
128121 foldRecM (\_ x -> putInt8 x) unit stackblower
129−
130− do
131− let
132− putStringUtf8 :: forall m. MonadEffect m => String -> PutM m Unit
133− putStringUtf8 s = do
134− textEncoder <- liftEffect TextEncoder.new
135− let stringbuf = buffer $ encode s textEncoder
136− -- Put a 32-bit big-endian length prefix for the length of the utf8 string, in bytes.
137− putInt32be $ byteLength stringbuf
138− putArrayBuffer stringbuf
139−
140− arraybuffer :: ArrayBuffer <- execPut $ putStringUtf8 "🦝"
141− view :: Int8Array <- AV.whole arraybuffer
142− viewarray <- AV.toArray view
143− assertEqual' "utf-8 test"
144− { actual: viewarray
145− , expected: [ 0, 0, 0, 4, -16, -97, -90, -99 ]
146− }