124 lines
2.9 KiB
Haskell
124 lines
2.9 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
import C.Zcash (CodedString(CodedString), rustWrapperIsUA)
|
|
import qualified Data.ByteString as BS
|
|
import Data.Word
|
|
import Test.Hspec
|
|
import Zcash
|
|
|
|
main :: IO ()
|
|
main = do
|
|
hspec $ do
|
|
describe "F4Jumble" $ do
|
|
it "jumble a string" $ do
|
|
let input =
|
|
[ 0x5d
|
|
, 0x7a
|
|
, 0x8f
|
|
, 0x73
|
|
, 0x9a
|
|
, 0x2d
|
|
, 0x9e
|
|
, 0x94
|
|
, 0x5b
|
|
, 0x0c
|
|
, 0xe1
|
|
, 0x52
|
|
, 0xa8
|
|
, 0x04
|
|
, 0x9e
|
|
, 0x29
|
|
, 0x4c
|
|
, 0x4d
|
|
, 0x6e
|
|
, 0x66
|
|
, 0xb1
|
|
, 0x64
|
|
, 0x93
|
|
, 0x9d
|
|
, 0xaf
|
|
, 0xfa
|
|
, 0x2e
|
|
, 0xf6
|
|
, 0xee
|
|
, 0x69
|
|
, 0x21
|
|
, 0x48
|
|
, 0x1c
|
|
, 0xdd
|
|
, 0x86
|
|
, 0xb3
|
|
, 0xcc
|
|
, 0x43
|
|
, 0x18
|
|
, 0xd9
|
|
, 0x61
|
|
, 0x4f
|
|
, 0xc8
|
|
, 0x20
|
|
, 0x90
|
|
, 0x5d
|
|
, 0x04
|
|
, 0x2b
|
|
] :: [Word8]
|
|
let out =
|
|
[ 0x03
|
|
, 0x04
|
|
, 0xd0
|
|
, 0x29
|
|
, 0x14
|
|
, 0x1b
|
|
, 0x99
|
|
, 0x5d
|
|
, 0xa5
|
|
, 0x38
|
|
, 0x7c
|
|
, 0x12
|
|
, 0x59
|
|
, 0x70
|
|
, 0x67
|
|
, 0x35
|
|
, 0x04
|
|
, 0xd6
|
|
, 0xc7
|
|
, 0x64
|
|
, 0xd9
|
|
, 0x1e
|
|
, 0xa6
|
|
, 0xc0
|
|
, 0x82
|
|
, 0x12
|
|
, 0x37
|
|
, 0x70
|
|
, 0xc7
|
|
, 0x13
|
|
, 0x9c
|
|
, 0xcd
|
|
, 0x88
|
|
, 0xee
|
|
, 0x27
|
|
, 0x36
|
|
, 0x8c
|
|
, 0xd0
|
|
, 0xc0
|
|
, 0x92
|
|
, 0x1a
|
|
, 0x04
|
|
, 0x44
|
|
, 0xc8
|
|
, 0xe5
|
|
, 0x85
|
|
, 0x8d
|
|
, 0x22
|
|
] :: [Word8]
|
|
CodedString (BS.pack out) `shouldBe` f4Jumble (BS.pack input)
|
|
describe "Unified address" $ do
|
|
it "succeeds with correct UA" $ do
|
|
let ua =
|
|
"u1salpdyefywvsg2dlmxg9589yznh0h9v6qjr478k80amtkqkws5pr408lxt2953dpprvu06mahxt99cv65fgsm7sw8hlchplfg5pl89ur"
|
|
isValidUnifiedAddress ua `shouldBe` True
|
|
it "fails with incorrect UA" $ do
|
|
let ua =
|
|
"u1salpdyefbreakingtheaddressh0h9v6qjr478k80amtkqkws5pr408lxt2953dpprvu06mahxt99cv65fgsm7sw8hlchplfg5pl89ur"
|
|
isValidUnifiedAddress ua `shouldBe` False
|