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
|