packages feed

ethereum-analyzer-2.0.0: test/Ethereum/Analyzer/Solidity/ForeachSpec.hs

module Ethereum.Analyzer.Solidity.ForeachSpec
  ( spec
  ) where

import Protolude hiding (show)

import Ethereum.Analyzer.Solidity
import Ethereum.Analyzer.TestData.DaoJson (simpleDaoJson)
import Ethereum.Analyzer.TestData.StorageJson (storageJson)
import Test.Hspec

spec :: Spec
spec = do
  describe "statementsOf" $
    parallel $ do
      it "works for storageJson" $ do
        case decodeContracts storageJson of
          Right contracts ->
            sum (map (length . statementsOf) contracts) `shouldBe` 2
          Left err -> expectationFailure $ toS err
      it "works for simpleDaoJson" $ do
        case decodeContracts simpleDaoJson of
          Right contracts ->
            sum (map (length . statementsOf) contracts) `shouldBe` 39
          Left err -> expectationFailure $ toS err
  describe "expressionsOf" $
    parallel $ do
      it "works for storageJson" $ do
        case decodeContracts storageJson of
          Right contracts ->
            sum (map (length . expressionsOf) contracts) `shouldBe` 1
          Left err -> expectationFailure $ toS err
      it "works for simpleDaoJson" $ do
        case decodeContracts simpleDaoJson of
          Right contracts ->
            sum (map (length . expressionsOf) contracts) `shouldBe` 33
          Left err -> expectationFailure $ toS err