urbit/pkg/arvo/tests/sys/zuse/ethereum/rlp.hoon
Fang 1647d760d1
zuse: implement eth rlp decoding
Also updates existing tests to check both en- and decoding.
2019-12-14 21:39:54 +01:00

58 lines
1.0 KiB
Plaintext

::NOTE tests lightly modified from the examples here:
:: https://github.com/ethereum/wiki/wiki/RLP
::
/+ *test
=, rlp:ethereum
::
=/ vectors=(list [nom=tape dat=@ rlp=item])
:~ :+ "string"
0x83aa.bbcc
b+3^0xaa.bbcc
::
:+ "list"
0xc8.83aa.bbcc.83dd.eeff
l+~[b+3^0xaa.bbcc b+3^0xdd.eeff]
::
:+ "empty list"
0xc0
l+~
::
:+ "zero byte"
0x0
b+1^0x0
::
:+ "empty zero"
0x80
b+0^0x0
::
:+ "value 15"
0xf
b+1^0xf
::
:+ "value 1024"
0x82.0400
b+2^0x400
::
:+ "set of three"
0xc7c0.c1c0.c3c0.c1c0
l+[l+~ l+[l+~ ~] l+[l+~ l+[l+~ ~] ~] ~]
==
::
|%
++ test-all-vectors
|- ^- tang
?~ vectors ~
%+ weld $(vectors t.vectors)
=, i.vectors
%+ category nom
%+ weld
%+ category "encode"
%+ expect-eq
!> dat
!> (encode rlp)
%+ category "decode"
%+ expect-eq
!> rlp
!> (decode dat)
--