@@ -1,15 +1,18 @@
1module Test.Main where
1module Test.Main where
3−import Data.ArrayBuffer.Builder
3+import Prelude
5+import Control.Monad.Rec.Class (Step(..), tailRecM)
5import Control.Monad.Writer.Trans (tell)
6import Control.Monad.Writer.Trans (tell)
7+import Data.Array (foldRecM)
8+import Data.Array as Array
9+import Data.ArrayBuffer.Builder (Builder, DataBuff(..), PutM, execPut, putInt16be, putInt32le, putInt8, subBuilder)
6import Data.ArrayBuffer.Builder.Internal (cons, encodeInt8, execBuilder, length, singleton, (<>>))
10import Data.ArrayBuffer.Builder.Internal (cons, encodeInt8, execBuilder, length, singleton, (<>>))
7import Data.ArrayBuffer.DataView as DV
11import Data.ArrayBuffer.DataView as DV
8import Data.ArrayBuffer.Typed as AT
12import Data.ArrayBuffer.Typed as AT
9import Data.ArrayBuffer.Types (ArrayBuffer, Uint8Array)
13import Data.ArrayBuffer.Types (ArrayBuffer, Uint8Array)
10import Data.UInt as UInt
14import Data.UInt as UInt
11import Effect (Effect)
15import Effect (Effect)
12−import Prelude (Unit, bind, pure, discard, map, negate, ($), (<$>), (=<<), (<>))
13import Test.Assert (assertEqual')
16import Test.Assert (assertEqual')
15asBytes :: ArrayBuffer -> Effect (Array Int)
18asBytes :: ArrayBuffer -> Effect (Array Int)
@@ -29,39 +32,39 @@ buildTest label expected bldr = do
30main :: Effect Unit
33main :: Effect Unit
32− putTest "Test 0" [6,7,8] $ do
35+ putTest "Test 0" [6,7,8] do
37− putTest "Test 1" [255,254] $ do
40+ putTest "Test 1" [255,254] do
38 putInt16be (-2)
41 putInt16be (-2)
40− putTest "Test 3" [3,0,0,0] $ do
43+ putTest "Test 3" [3,0,0,0] do
41 putInt32le 3
44 putInt32le 3
43− buildTest "Test 4" [1,2,3,4] $ do
46+ buildTest "Test 4" [1,2,3,4] do
44 b1 <- Buff <$> encodeInt8 1
47 b1 <- Buff <$> encodeInt8 1
45 b2 <- Buff <$> encodeInt8 2
48 b2 <- Buff <$> encodeInt8 2
46 b3 <- Buff <$> encodeInt8 3
49 b3 <- Buff <$> encodeInt8 3
47 b4 <- Buff <$> encodeInt8 4
50 b4 <- Buff <$> encodeInt8 4
48 pure $ singleton b1 <> singleton b2 <> singleton b3 <> singleton b4
51 pure $ singleton b1 <> singleton b2 <> singleton b3 <> singleton b4
50− buildTest "Test 5" [1,2,3,4] $ do
53+ buildTest "Test 5" [1,2,3,4] do
51 b1 <- Buff <$> encodeInt8 1
54 b1 <- Buff <$> encodeInt8 1
52 b2 <- Buff <$> encodeInt8 2
55 b2 <- Buff <$> encodeInt8 2
53 b3 <- Buff <$> encodeInt8 3
56 b3 <- Buff <$> encodeInt8 3
54 b4 <- Buff <$> encodeInt8 4
57 b4 <- Buff <$> encodeInt8 4
55 pure $ singleton b1 <>> singleton b2 <>> singleton b3 <>> singleton b4
58 pure $ singleton b1 <>> singleton b2 <>> singleton b3 <>> singleton b4
57− buildTest "Test 6" [1,2,3,4] $ do
60+ buildTest "Test 6" [1,2,3,4] do
58 b1 <- Buff <$> encodeInt8 1
61 b1 <- Buff <$> encodeInt8 1
59 b2 <- Buff <$> encodeInt8 2
62 b2 <- Buff <$> encodeInt8 2
60 b3 <- Buff <$> encodeInt8 3
63 b3 <- Buff <$> encodeInt8 3
61 b4 <- Buff <$> encodeInt8 4
64 b4 <- Buff <$> encodeInt8 4
62 pure $ singleton b1 <> (singleton b2 <> singleton b3) <> singleton b4
65 pure $ singleton b1 <> (singleton b2 <> singleton b3) <> singleton b4
64− 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
65 b1 <- Buff <$> encodeInt8 1
68 b1 <- Buff <$> encodeInt8 1
66 b2 <- Buff <$> encodeInt8 2
69 b2 <- Buff <$> encodeInt8 2
67 b3 <- Buff <$> encodeInt8 3
70 b3 <- Buff <$> encodeInt8 3
@@ -73,7 +76,7 @@ main = do
73 pure $ singleton b1 <> (singleton b2 <> singleton b3) <> singleton b4
76 pure $ singleton b1 <> (singleton b2 <> singleton b3) <> singleton b4
74 <> singleton b5 <> (singleton b6 <> singleton b7) <> singleton b8
77 <> singleton b5 <> (singleton b6 <> singleton b7) <> singleton b8
76− 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
77 b1 <- Buff <$> encodeInt8 1
80 b1 <- Buff <$> encodeInt8 1
78 b2 <- Buff <$> encodeInt8 2
81 b2 <- Buff <$> encodeInt8 2
79 b3 <- Buff <$> encodeInt8 3
82 b3 <- Buff <$> encodeInt8 3
@@ -85,15 +88,15 @@ main = do
85 pure $ ((singleton b1 <> singleton b2) <> (singleton b3 <> singleton b4))
88 pure $ ((singleton b1 <> singleton b2) <> (singleton b3 <> singleton b4))
86 <> ((singleton b5 <> singleton b6) <> (singleton b7 <> singleton b8))
89 <> ((singleton b5 <> singleton b6) <> (singleton b7 <> singleton b8))
88− buildTest "Test 8" [1,2,3,4] $ do
91+ buildTest "Test 8" [1,2,3,4] do
89 b1 <- Buff <$> encodeInt8 1
92 b1 <- Buff <$> encodeInt8 1
90 b2 <- Buff <$> encodeInt8 2
93 b2 <- Buff <$> encodeInt8 2
91 b3 <- Buff <$> encodeInt8 3
94 b3 <- Buff <$> encodeInt8 3
92 b4 <- Buff <$> encodeInt8 4
95 b4 <- Buff <$> encodeInt8 4
93 pure $ (cons b1 (singleton b2)) <> (cons b3 (singleton b4))
96 pure $ (cons b1 (singleton b2)) <> (cons b3 (singleton b4))
95− putTest "Test 9" [1,2,2,3,4] $ do
98+ putTest "Test 9" [1,2,2,3,4] do
96− x <- subBuilder $ do
99+ x <- subBuilder do
97 putInt8 3
100 putInt8 3
98 putInt8 4
101 putInt8 4
99 putInt8 1
102 putInt8 1
@@ -101,7 +104,7 @@ main = do
101 putInt8 $ length x
104 putInt8 $ length x
104− 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
105 b1 <- View <$> DV.whole <$> encodeInt8 1
108 b1 <- View <$> DV.whole <$> encodeInt8 1
106 b2 <- View <$> DV.whole <$> encodeInt8 2
109 b2 <- View <$> DV.whole <$> encodeInt8 2
107 b3 <- View <$> DV.whole <$> encodeInt8 3
110 b3 <- View <$> DV.whole <$> encodeInt8 3
@@ -113,3 +116,6 @@ main = do
113 pure $ ((singleton b1 <> singleton b2) <> (singleton b3 <> singleton b4))
116 pure $ ((singleton b1 <> singleton b2) <> (singleton b3 <> singleton b4))
114 <> ((singleton b5 <> singleton b6) <> (singleton b7 <> singleton b8))
117 <> ((singleton b5 <> singleton b6) <> (singleton b7 <> singleton b8))
119+ let stackblower = Array.replicate 20000 2
120+ putTest "Stack test" stackblower do
121+ foldRecM (\_ x -> putInt8 x) unit stackblower