@@ -2,22 +2,37 @@ module Test.Main where
2
2
3
3
import Prelude
4
4
import Control.Monad.Eff
5
- import Control.Monad.Eff.Console (log )
5
+ import Control.Monad.Eff.Console (log , CONSOLE () )
6
6
import Test.Assert
7
7
8
8
import Node.Buffer
9
+ import Node.Encoding
9
10
10
- main :: Eff _ Unit
11
+ type Test = forall e . Eff (assert :: ASSERT , buffer :: BUFFER , console :: CONSOLE | e ) Unit
12
+
13
+ main :: Test
11
14
main = do
12
15
log " Testing..."
16
+
13
17
log " Reading and writing"
14
18
testReadWrite
19
+
15
20
log " fromArray"
16
21
testFromArray
22
+
17
23
log " toArray"
18
24
testToArray
19
25
20
- testReadWrite :: Eff _ Unit
26
+ log " fromString"
27
+ testFromString
28
+
29
+ log " toString"
30
+ testToString
31
+
32
+ log " readString"
33
+ testReadString
34
+
35
+ testReadWrite :: Test
21
36
testReadWrite = do
22
37
buf <- create 1
23
38
let val = 42
@@ -26,14 +41,14 @@ testReadWrite = do
26
41
27
42
assertEq val readVal
28
43
29
- testFromArray :: Eff _ Unit
44
+ testFromArray :: Test
30
45
testFromArray = do
31
46
buf <- fromArray [1 ,2 ,3 ,4 ,5 ]
32
47
readVal <- read UInt8 2 buf
33
48
34
49
assertEq 3 readVal
35
50
36
- testToArray :: Eff _ Unit
51
+ testToArray :: Test
37
52
testToArray = do
38
53
let val = [1 ,2 ,67 ,3 ,3 ,7 ,8 ,3 ,4 ,237 ]
39
54
@@ -42,7 +57,34 @@ testToArray = do
42
57
43
58
assertEq val valOut
44
59
45
- assertEq :: forall a . (Eq a , Show a ) => a -> a -> Eff _ Unit
60
+ testFromString :: Test
61
+ testFromString = do
62
+ let str = " hello, world"
63
+
64
+ buf <- fromString str ASCII
65
+ val <- read UInt8 6 buf
66
+
67
+ assertEq val 32 -- ASCII space
68
+
69
+ testToString :: Test
70
+ testToString = do
71
+ let str = " hello, world"
72
+
73
+ buf <- fromString str ASCII
74
+ strOut <- toString ASCII buf
75
+
76
+ assertEq str strOut
77
+
78
+ testReadString :: Test
79
+ testReadString = do
80
+ let str = " hello, world"
81
+
82
+ buf <- fromString str ASCII
83
+ strOut <- readString ASCII 7 12 buf
84
+
85
+ assertEq " world" strOut
86
+
87
+ assertEq :: forall a . (Eq a , Show a ) => a -> a -> Test
46
88
assertEq x y =
47
89
if x == y
48
90
then return unit
0 commit comments