-- | Tests for 'Tezos.Address'. module Test.Tezos.Address ( test_Roundtrip , test_parseAddress ) where import Test.Hspec (shouldSatisfy) import Test.Tasty (TestTree, testGroup) import Test.Tasty.HUnit (testCase) import Tezos.Address (Address, formatAddress, parseAddress) import Test.Util.QuickCheck (ShowThroughBuild(..), aesonRoundtrip, roundtripTestSTB) test_Roundtrip :: [TestTree] test_Roundtrip = [ testGroup "parse . format ≡ pure" [ roundtripTestSTB formatAddress parseAddress ] , testGroup "JSON encoding/deconding" [ aesonRoundtrip @Address ] ] test_parseAddress :: [TestTree] test_parseAddress = [ testCase "Successfully parses valid sample data" $ forM_ sampleAddresses (\a -> bimap STB STB (parseAddress a) `shouldSatisfy` isRight) , testCase "Fails to parse invalid data" $ do forM_ invalidAddresses (\a -> bimap STB STB (parseAddress a) `shouldSatisfy` isLeft) ] where sampleAddresses = [ "tz1faswCTDciRzE4oJ9jn2Vm2dvjeyA9fUzU" , "tz1Wit2PqodvPeuRRhdQXmkrtU8e8bRYZecd" , "tz2EfqCbLmpfv7mNiLcMmhxAwdgHtPTcwR4W" , "tz2Darj3LyQzekU98ZK8diHvuyn1YYjcHpc6" , "tz3UoffC7FG7zfpmvmjUmUeAaHvzdcUvAj6r" , "tz3NExpXn9aPNZPorRE4SdjJ2RGrfbJgMAaV" , "KT1G4hcQj2STN86GwC1XAkPtwPPhgfPKuE45" , "KT1QbdJ7M7uAQZwLpvzerUyk7LYkJWDL7eDh" ] invalidAddresses = [ "" , "1" -- These are slightly modified versions of some valid addresses above. , "tz1faswCTDciRzE4oJ9jn2Vm2dvjeyA9fUZU" , "tz2darj3LyQzekU98ZK8diHvuyn1YYjcHpc6" , "tz3UoffC8FG7zfpmvmjUmUeAaHvzdcUvAj6r" , "KT1G4hcQj2STN86GwC1XAkPtwPPhgfPKuE46" ]