@@ -1,15 +1,18 @@
11module Test.Main where
22
3−import Data.ArrayBuffer.Builder
3+import Prelude
44
5+import Control.Monad.Rec.Class (Step(..), tailRecM)
56import 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)
610import Data.ArrayBuffer.Builder.Internal (cons, encodeInt8, execBuilder, length, singleton, (<>>))
711import Data.ArrayBuffer.DataView as DV
812import Data.ArrayBuffer.Typed as AT
913import Data.ArrayBuffer.Types (ArrayBuffer, Uint8Array)
1014import Data.UInt as UInt
1115import Effect (Effect)
12−import Prelude (Unit, bind, pure, discard, map, negate, ($), (<$>), (=<<), (<>))
1316import Test.Assert (assertEqual')
1417
1518asBytes :: ArrayBuffer -> Effect (Array Int)
@@ -29,39 +32,39 @@ buildTest label expected bldr = do
2932
3033main :: Effect Unit
3134main = do
32− putTest "Test 0" [6,7,8] $ do
35+ putTest "Test 0" [6,7,8] do
3336 putInt8 6
3437 putInt8 7
3538 putInt8 8
3639
37− putTest "Test 1" [255,254] $ do
40+ putTest "Test 1" [255,254] do
3841 putInt16be (-2)
3942
40− putTest "Test 3" [3,0,0,0] $ do
43+ putTest "Test 3" [3,0,0,0] do
4144 putInt32le 3
4245
43− buildTest "Test 4" [1,2,3,4] $ do
46+ buildTest "Test 4" [1,2,3,4] do
4447 b1 <- Buff <$> encodeInt8 1
4548 b2 <- Buff <$> encodeInt8 2
4649 b3 <- Buff <$> encodeInt8 3
4750 b4 <- Buff <$> encodeInt8 4
4851 pure $ singleton b1 <> singleton b2 <> singleton b3 <> singleton b4
4952
50− buildTest "Test 5" [1,2,3,4] $ do
53+ buildTest "Test 5" [1,2,3,4] do
5154 b1 <- Buff <$> encodeInt8 1
5255 b2 <- Buff <$> encodeInt8 2
5356 b3 <- Buff <$> encodeInt8 3
5457 b4 <- Buff <$> encodeInt8 4
5558 pure $ singleton b1 <>> singleton b2 <>> singleton b3 <>> singleton b4
5659
57− buildTest "Test 6" [1,2,3,4] $ do
60+ buildTest "Test 6" [1,2,3,4] do
5861 b1 <- Buff <$> encodeInt8 1
5962 b2 <- Buff <$> encodeInt8 2
6063 b3 <- Buff <$> encodeInt8 3
6164 b4 <- Buff <$> encodeInt8 4
6265 pure $ singleton b1 <> (singleton b2 <> singleton b3) <> singleton b4
6366
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
6568 b1 <- Buff <$> encodeInt8 1
6669 b2 <- Buff <$> encodeInt8 2
6770 b3 <- Buff <$> encodeInt8 3
@@ -73,7 +76,7 @@ main = do
7376 pure $ singleton b1 <> (singleton b2 <> singleton b3) <> singleton b4
7477 <> singleton b5 <> (singleton b6 <> singleton b7) <> singleton b8
7578
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
7780 b1 <- Buff <$> encodeInt8 1
7881 b2 <- Buff <$> encodeInt8 2
7982 b3 <- Buff <$> encodeInt8 3
@@ -85,15 +88,15 @@ main = do
8588 pure $ ((singleton b1 <> singleton b2) <> (singleton b3 <> singleton b4))
8689 <> ((singleton b5 <> singleton b6) <> (singleton b7 <> singleton b8))
8790
88− buildTest "Test 8" [1,2,3,4] $ do
91+ buildTest "Test 8" [1,2,3,4] do
8992 b1 <- Buff <$> encodeInt8 1
9093 b2 <- Buff <$> encodeInt8 2
9194 b3 <- Buff <$> encodeInt8 3
9295 b4 <- Buff <$> encodeInt8 4
9396 pure $ (cons b1 (singleton b2)) <> (cons b3 (singleton b4))
9497
95− putTest "Test 9" [1,2,2,3,4] $ do
96− x <- subBuilder $ do
98+ putTest "Test 9" [1,2,2,3,4] do
99+ x <- subBuilder do
97100 putInt8 3
98101 putInt8 4
99102 putInt8 1
@@ -101,7 +104,7 @@ main = do
101104 putInt8 $ length x
102105 tell x
103106
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
105108 b1 <- View <$> DV.whole <$> encodeInt8 1
106109 b2 <- View <$> DV.whole <$> encodeInt8 2
107110 b3 <- View <$> DV.whole <$> encodeInt8 3
@@ -113,3 +116,6 @@ main = do
113116 pure $ ((singleton b1 <> singleton b2) <> (singleton b3 <> singleton b4))
114117 <> ((singleton b5 <> singleton b6) <> (singleton b7 <> singleton b8))
115118
119+ let stackblower = Array.replicate 20000 2
120+ putTest "Stack test" stackblower do
121+ foldRecM (\_ x -> putInt8 x) unit stackblower