@@ -10,6 +10,7 @@ import List.Extra as List
1010import Test exposing (..)
1111import Test.Utils exposing (..)
1212import Urbit exposing (..)
13+import Urbit.Constructor as C
1314import Urbit.Deconstructor as D
1415
1516
@@ -148,6 +149,60 @@ tests =
148149 (Bytes.fromByteValues [ 0xC1, 0x20, 0xE4, 0x01 ])
149150 )
150151 )
152+ , test "65.600"
153+ (\() ->
154+ Expect.equal
155+ (Just 65600)
156+ (D.runBytes
157+ D.int
158+ (Bytes.fromByteValues [ 0xC0, 0x00, 0x02, 0x08 ])
159+ )
160+ )
161+ ]
162+ , describe "Constructor <-> Deconstructor"
163+ [ Test.fuzz
164+ (Fuzz.triple Fuzz.niceFloat Fuzz.int (Fuzz.intAtLeast 0))
165+ "[@rd @s @u]"
166+ (\( f, i, ui ) ->
167+ Expect.equal (Just ( f, i, ui ))
168+ (D.run
169+ (D.cell D.float64 (D.cell D.signedInt D.int) |> D.map (\a b c -> ( a, b, c )))
170+ (C.cell (C.float64 f) (C.cell (C.signedInt i) (C.int ui)))
171+ )
172+ )
173+ , Test.fuzz
174+ (Fuzz.list Fuzz.int)
175+ "~[@s]"
176+ (\x ->
177+ Expect.equal
178+ (Just x)
179+ (D.run
180+ (D.list D.signedInt)
181+ (C.listOf C.signedInt x)
182+ )
183+ )
184+ , Test.fuzz
185+ Fuzz.string
186+ "cord"
187+ (\x ->
188+ Expect.equal
189+ (Just x)
190+ (D.run
191+ D.cord
192+ (C.cord x)
193+ )
194+ )
195+ , Test.fuzz
196+ Fuzz.string
197+ "tape"
198+ (\x ->
199+ Expect.equal
200+ (Just x)
201+ (D.run
202+ D.tape
203+ (C.tape x)
204+ )
205+ )
151206 ]
152207 ]
153208