base-58
Version:
Base58 encoding & decoding for Node.js & web agent windows.
109 lines (104 loc) • 2.8 kB
text/coffeescript
module.exports = (tape, Base58) ->
tape "Base58", (test) ->
test.same Base58.encode.constructor, Function
test.same Base58.decode.constructor, Function
test.end()
tape "encode valid string input", (test) ->
test.plan FIXTURES.valid.length
for fixture in FIXTURES.valid
actual = Base58.encode(new Buffer(fixture.hex, 'hex'))
test.same actual, fixture.string
test.end()
tape "decode valid hex input", (test) ->
test.plan FIXTURES.valid.length
for fixture in FIXTURES.valid
actual = new Buffer(Base58.decode(fixture.string)).toString('hex')
test.same actual, fixture.hex
test.end()
tape "can’t decode invalid input", (test) ->
test.plan FIXTURES.invalid.length
for fixture in FIXTURES.invalid
impossible = -> Base58.decode(fixture.string)
test.throws impossible, /decode received unacceptable input/
test.end()
FIXTURES =
"valid": [
{
"hex": "",
"string": ""
},
{
"hex": "61",
"string": "2g"
},
{
"hex": "626262",
"string": "a3gV"
},
{
"hex": "636363",
"string": "aPEr"
},
{
"hex": "73696d706c792061206c6f6e6720737472696e67",
"string": "2cFupjhnEsSn59qHXstmK2ffpLv2"
},
{
"hex": "00eb15231dfceb60925886b67d065299925915aeb172c06647",
"string": "1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L"
},
{
"hex": "516b6fcd0f",
"string": "ABnLTmg"
},
{
"hex": "bf4f89001e670274dd",
"string": "3SEo3LWLoPntC"
},
{
"hex": "572e4794",
"string": "3EFU7m"
},
{
"hex": "ecac89cad93923c02321",
"string": "EJDM8drfXA6uyA"
},
{
"hex": "10c8511e",
"string": "Rt5zm"
},
{
"hex": "00000000000000000000",
"string": "1111111111"
},
{
"hex": "801184cd2cdd640ca42cfc3a091c51d549b2f016d454b2774019c2b2d2e08529fd206ec97e",
"string": "5Hx15HFGyep2CfPxsJKe2fXJsCVn5DEiyoeGGF6JZjGbTRnqfiD"
},
{
"hex": "003c176e659bea0f29a3e9bf7880c112b1b31b4dc826268187",
"string": "16UjcYNBG9GTK4uq2f7yYEbuifqCzoLMGS"
}
],
"invalid": [
{
"description": "non-base58 string",
"string": "invalid"
},
{
"description": "non-base58 alphabet",
"string": "c2F0b3NoaQo="
},
{
"description": "leading whitespace",
"string": " 1111111111"
},
{
"description": "trailing whitespace",
"string": "1111111111 "
},
{
"description": "unexpected character after whitespace",
"string": " \t\n\u000b\f\r skip \r\f\u000b\n\t a"
}
]