@@ -93,6 +93,52 @@ tests =
9393 (Bytes.fromByteValues [ 0x01, 0x1F, 0x00, 0x00, 0x20, 0x08, 0x7C, 0x00, 0x00, 0x98, 0x20 ])
9494 )
9595 )
96+ , test "[8 'hi']"
97+ (\() ->
98+ Expect.equal
99+ (Just ( 8, "hi" ))
100+ (D.runBytes
101+ (D.cell D.int D.cord |> D.map Tuple.pair)
102+ (Bytes.fromByteValues [ 0x41, 0x10, 0x3C, 0x5A, 0x1A ])
103+ )
104+ )
105+ , test "[8 \"hi\"]"
106+ (\() ->
107+ Expect.equal
108+ (Just ( 8, "hi" ))
109+ (D.runBytes
110+ (D.cell D.int D.tape |> D.map Tuple.pair)
111+ (Bytes.fromByteValues [ 0x41, 0x30, 0x38, 0x3A, 0x78, 0x5A ])
112+ )
113+ )
114+ , describe "sum types"
115+ [ test "[%tape \"hi\"]"
116+ (\() ->
117+ Expect.equal
118+ (Just "hi")
119+ (D.runBytes
120+ (D.oneOf
121+ [ D.cell (D.const D.cord "tape") D.tape
122+ , D.cell (D.const D.cord "cord") D.cord
123+ ]
124+ )
125+ (Bytes.fromByteValues [ 0x01, 0x9F, 0x2E, 0x0C, 0xAE, 0x1C, 0x1C, 0x1D, 0x3C, 0x2D ])
126+ )
127+ )
128+ , test "[%cord 'hi']"
129+ (\() ->
130+ Expect.equal
131+ (Just "hi")
132+ (D.runBytes
133+ (D.oneOf
134+ [ D.cell (D.const D.cord "tape") D.tape
135+ , D.cell (D.const D.cord "cord") D.cord
136+ ]
137+ )
138+ (Bytes.fromByteValues [ 0x01, 0x7F, 0xEC, 0x4D, 0x8E, 0x0C, 0x1E, 0x2D, 0x0D ])
139+ )
140+ )
141+ ]
96142 ]
97143 ]
98144