agora/agora-bench/Main.hs
2022-06-22 00:14:37 +08:00

51 lines
1.8 KiB
Haskell

module Main (main) where
import Bench (specificationTreeToBenchmarks)
import Data.Csv (EncodeOptions (encUseCrLf), defaultEncodeOptions, encodeDefaultOrderedByNameWith)
import Data.Text.Lazy.Encoding (decodeUtf8)
import Data.Text.Lazy.IO as I (writeFile)
import Options (Options (..), parseOptions)
import Prettyprinter (defaultLayoutOptions, layoutPretty, pretty)
import Prettyprinter.Render.String (renderString)
import Spec.AuthorityToken qualified as AuthorityToken
import Spec.Effect.GovernorMutation qualified as GovernorMutation
import Spec.Effect.TreasuryWithdrawal qualified as TreasuryWithdrawal
import Spec.Governor qualified as Governor
import Spec.Proposal qualified as Proposal
import Spec.Stake qualified as Stake
import Spec.Treasury qualified as Treasury
import Test.Specification (group)
import Prelude
--------------------------------------------------------------------------------
main :: IO ()
main = do
options <- parseOptions
I.writeFile options.output $
(decodeUtf8 . encodeDefaultOrderedByNameWith encodeOptions) res
mapM_ (putStrLn . renderString . layoutPretty defaultLayoutOptions . pretty) res
where
encodeOptions =
defaultEncodeOptions
{ encUseCrLf = False
}
res =
specificationTreeToBenchmarks $
group
"Agora"
[ group
"Effects"
[ group "Treasury Withdrawal Effect" TreasuryWithdrawal.specs
, group "Governor Mutation Effect" GovernorMutation.specs
]
, group "Stake" Stake.specs
, group "Proposal" Proposal.specs
, group "AuthorityToken" AuthorityToken.specs
, group "Treasury" Treasury.specs
, group "AuthorityToken" AuthorityToken.specs
, group "Governor" Governor.specs
]