packages feed

morley-0.1.0.0: test/Test/Tezos/Address.hs

-- | Tests for 'Tezos.Address'.

module Test.Tezos.Address
  ( spec
  ) where

import Test.Hspec (Spec, describe, it, shouldSatisfy)

import Tezos.Address (Address, formatAddress, parseAddress)

import Test.Util.QuickCheck (ShowThroughBuild(..), aesonRoundtrip, roundtripSpecSTB)

spec :: Spec
spec = describe "Tezos.Address" $ do
  describe "parseAddress" $ do
    it "Successfully parses valid sample data" $
      forM_ sampleAddresses (\a -> bimap STB STB (parseAddress a) `shouldSatisfy` isRight)
    it "Fails to parse invalid data" $ do
      forM_ invalidAddresses (\a -> bimap STB STB (parseAddress a) `shouldSatisfy` isLeft)
    describe "Formatting" $ do
      describe "Roundtrip (parse . format ≡ pure)" $ do
        roundtripSpecSTB formatAddress parseAddress
      describe "Roundtrip (JSON encoding/deconding)" $ do
        aesonRoundtrip @Address
  where
    sampleAddresses =
      [ "tz1faswCTDciRzE4oJ9jn2Vm2dvjeyA9fUzU"
      , "KT1G4hcQj2STN86GwC1XAkPtwPPhgfPKuE45"
      ]
    invalidAddresses =
      [ ""
      , "1"
      , "tz1faswCTDciRzE4oJ9jn2Vm2dvjeyA9fUZU"
      , "KT1G4hcQj2STN86GwC1XAkPtwPPhgfPKuE46"
      ]