From 9f116dd2cf727edf9e200bf6610f4d6b94c33743 Mon Sep 17 00:00:00 2001 From: fanghr Date: Thu, 12 May 2022 18:55:39 +0800 Subject: [PATCH] merge #74; add sample and spec of the governor --- .../Sample/Effect/TreasuryWithdrawal.hs | 6 ++-- .../Spec => agora-sample}/Sample/Governor.hs | 6 ++-- .../Spec => agora-sample}/Sample/Proposal.hs | 8 ++--- .../Spec => agora-sample}/Sample/Shared.hs | 4 +-- .../Spec => agora-sample}/Sample/Stake.hs | 8 ++--- .../Spec => agora-sample}/Sample/Treasury.hs | 8 ++--- agora-test/Spec.hs | 4 +++ agora-test/Spec/AuthorityToken.hs | 2 +- agora-test/Spec/Effect/TreasuryWithdrawal.hs | 4 +-- agora-test/Spec/Governor.hs | 6 ++-- agora-test/Spec/Proposal.hs | 8 ++--- agora-test/Spec/Stake.hs | 6 ++-- agora-test/Spec/Treasury.hs | 6 ++-- agora-test/Spec/Utils.hs | 13 +++++++ .../Spec => agora-testlib/Test}/Util.hs | 4 +-- agora.cabal | 34 ++++++++++++++----- 16 files changed, 81 insertions(+), 46 deletions(-) rename {agora-test/Spec => agora-sample}/Sample/Effect/TreasuryWithdrawal.hs (96%) rename {agora-test/Spec => agora-sample}/Sample/Governor.hs (99%) rename {agora-test/Spec => agora-sample}/Sample/Proposal.hs (98%) rename {agora-test/Spec => agora-sample}/Sample/Shared.hs (98%) rename {agora-test/Spec => agora-sample}/Sample/Stake.hs (97%) rename {agora-test/Spec => agora-sample}/Sample/Treasury.hs (97%) create mode 100644 agora-test/Spec/Utils.hs rename {agora-test/Spec => agora-testlib/Test}/Util.hs (99%) diff --git a/agora-test/Spec/Sample/Effect/TreasuryWithdrawal.hs b/agora-sample/Sample/Effect/TreasuryWithdrawal.hs similarity index 96% rename from agora-test/Spec/Sample/Effect/TreasuryWithdrawal.hs rename to agora-sample/Sample/Effect/TreasuryWithdrawal.hs index 81709fe..f698f77 100644 --- a/agora-test/Spec/Sample/Effect/TreasuryWithdrawal.hs +++ b/agora-sample/Sample/Effect/TreasuryWithdrawal.hs @@ -1,11 +1,11 @@ {- | -Module : Spec.Sample.Effect.TreasuryWithdrawalEffect +Module : Sample.Effect.TreasuryWithdrawalEffect Maintainer : seungheon.ooh@gmail.com Description: Sample based testing for Treasury Withdrawal Effect -This module provides smaples for Treasury Withdrawal Effect tests. +This module provides samples for Treasury Withdrawal Effect tests. -} -module Spec.Sample.Effect.TreasuryWithdrawal ( +module Sample.Effect.TreasuryWithdrawal ( inputTreasury, inputUser, inputGAT, diff --git a/agora-test/Spec/Sample/Governor.hs b/agora-sample/Sample/Governor.hs similarity index 99% rename from agora-test/Spec/Sample/Governor.hs rename to agora-sample/Sample/Governor.hs index 33c3fdb..d499d39 100644 --- a/agora-test/Spec/Sample/Governor.hs +++ b/agora-sample/Sample/Governor.hs @@ -5,7 +5,7 @@ Description: Sample based testing for Governor utxos This module tests primarily the happy path for Governor interactions -} -module Spec.Sample.Governor ( +module Sample.Governor ( createProposal, mutateState, mintGATs, @@ -65,7 +65,7 @@ import Agora.Stake ( -------------------------------------------------------------------------------- -import Spec.Sample.Shared ( +import Sample.Shared ( authorityTokenSymbol, defaultProposalThresholds, govAssetClass, @@ -81,7 +81,7 @@ import Spec.Sample.Shared ( stakeAddress, stakeAssetClass, ) -import Spec.Util (datumPair, toDatumHash) +import Test.Util (datumPair, toDatumHash) -------------------------------------------------------------------------------- diff --git a/agora-test/Spec/Sample/Proposal.hs b/agora-sample/Sample/Proposal.hs similarity index 98% rename from agora-test/Spec/Sample/Proposal.hs rename to agora-sample/Sample/Proposal.hs index 91749c4..e778fca 100644 --- a/agora-test/Spec/Sample/Proposal.hs +++ b/agora-sample/Sample/Proposal.hs @@ -1,11 +1,11 @@ {- | -Module : Spec.Sample.Proposal +Module : Sample.Proposal Maintainer : emi@haskell.fyi Description: Sample based testing for Proposal utxos This module tests primarily the happy path for Proposal interactions -} -module Spec.Sample.Proposal ( +module Sample.Proposal ( -- * Script contexts proposalCreation, cosignProposal, @@ -49,8 +49,8 @@ import Agora.Proposal ( import Agora.Stake (Stake (..), StakeDatum (StakeDatum)) import Plutarch.SafeMoney (Tagged (Tagged), untag) import PlutusTx.AssocMap qualified as AssocMap -import Spec.Sample.Shared -import Spec.Util (datumPair, toDatumHash) +import Sample.Shared +import Test.Util (datumPair, toDatumHash) -------------------------------------------------------------------------------- diff --git a/agora-test/Spec/Sample/Shared.hs b/agora-sample/Sample/Shared.hs similarity index 98% rename from agora-test/Spec/Sample/Shared.hs rename to agora-sample/Sample/Shared.hs index a7b200b..c6f40a7 100644 --- a/agora-test/Spec/Sample/Shared.hs +++ b/agora-sample/Sample/Shared.hs @@ -1,11 +1,11 @@ {- | -Module : Spec.Sample.Shared +Module : Sample.Shared Maintainer : emi@haskell.fyi Description: Shared useful values for creating Samples for testing. Shared useful values for creating Samples for testing. -} -module Spec.Sample.Shared ( +module Sample.Shared ( -- * Misc signer, signer2, diff --git a/agora-test/Spec/Sample/Stake.hs b/agora-sample/Sample/Stake.hs similarity index 97% rename from agora-test/Spec/Sample/Stake.hs rename to agora-sample/Sample/Stake.hs index c80fdea..723af00 100644 --- a/agora-test/Spec/Sample/Stake.hs +++ b/agora-sample/Sample/Stake.hs @@ -1,11 +1,11 @@ {- | -Module : Spec.Sample.Stake +Module : Sample.Stake Maintainer : emi@haskell.fyi Description: Sample based testing for Stake utxos This module tests primarily the happy path for Stake creation -} -module Spec.Sample.Stake ( +module Sample.Stake ( stake, stakeAssetClass, stakeSymbol, @@ -49,8 +49,8 @@ import Agora.SafeMoney (GTTag) import Agora.Stake import Agora.Stake.Scripts (stakeValidator) import Plutarch.SafeMoney -import Spec.Sample.Shared -import Spec.Util (datumPair, toDatumHash) +import Sample.Shared +import Test.Util (datumPair, toDatumHash) -------------------------------------------------------------------------------- diff --git a/agora-test/Spec/Sample/Treasury.hs b/agora-sample/Sample/Treasury.hs similarity index 97% rename from agora-test/Spec/Sample/Treasury.hs rename to agora-sample/Sample/Treasury.hs index 1cfb02c..41413e4 100644 --- a/agora-test/Spec/Sample/Treasury.hs +++ b/agora-sample/Sample/Treasury.hs @@ -1,14 +1,14 @@ {-# LANGUAGE TemplateHaskell #-} {- | -Module: Spec.Sample.Treasury +Module: Sample.Treasury Description: Sample data for `Spec.Treasury`. Maintainer: jack@mlabs.city This module contains sample data, used in the tests written in `Spec.Treasury`. -} -module Spec.Sample.Treasury ( +module Sample.Treasury ( gatCs, validCtx, treasuryRef, @@ -38,7 +38,7 @@ import Plutus.V1.Ledger.Scripts ( ValidatorHash (ValidatorHash), ) import Plutus.V1.Ledger.Value qualified as Value -import Spec.Sample.Shared ( +import Sample.Shared ( gatCs, gatTn, minAda, @@ -47,7 +47,7 @@ import Spec.Sample.Shared ( treasuryOut, wrongEffHash, ) -import Spec.Util (datumPair) +import Test.Util (datumPair) {- | A `ScriptContext` that should be compatible with treasury transactions. diff --git a/agora-test/Spec.hs b/agora-test/Spec.hs index 47e50f8..20fef77 100644 --- a/agora-test/Spec.hs +++ b/agora-test/Spec.hs @@ -13,6 +13,7 @@ import Spec.Model.MultiSig qualified as MultiSig import Spec.Proposal qualified as Proposal import Spec.Stake qualified as Stake import Spec.Treasury qualified as Treasury +import Spec.Utils qualified as Utils -- | The Agora test suite. main :: IO () @@ -44,6 +45,9 @@ main = , testGroup "Governor tests" Governor.tests + , testGroup + "Utility functions tests" + Utils.tests , testGroup "Multisig tests" [ testGroup diff --git a/agora-test/Spec/AuthorityToken.hs b/agora-test/Spec/AuthorityToken.hs index da1e371..fdfda03 100644 --- a/agora-test/Spec/AuthorityToken.hs +++ b/agora-test/Spec/AuthorityToken.hs @@ -33,7 +33,7 @@ import Plutus.V1.Ledger.Api ( import Plutus.V1.Ledger.Interval qualified as Interval import Plutus.V1.Ledger.Value qualified as Value import PlutusTx.AssocMap qualified as AssocMap -import Spec.Util (scriptFails, scriptSucceeds) +import Test.Util (scriptFails, scriptSucceeds) currencySymbol :: CurrencySymbol currencySymbol = "deadbeef" diff --git a/agora-test/Spec/Effect/TreasuryWithdrawal.hs b/agora-test/Spec/Effect/TreasuryWithdrawal.hs index 27310d9..a380edb 100644 --- a/agora-test/Spec/Effect/TreasuryWithdrawal.hs +++ b/agora-test/Spec/Effect/TreasuryWithdrawal.hs @@ -12,7 +12,7 @@ import Agora.Effect.TreasuryWithdrawal ( treasuryWithdrawalValidator, ) import Plutus.V1.Ledger.Value qualified as Value -import Spec.Sample.Effect.TreasuryWithdrawal ( +import Sample.Effect.TreasuryWithdrawal ( buildReceiversOutputFromDatum, buildScriptContext, currSymbol, @@ -25,8 +25,8 @@ import Spec.Sample.Effect.TreasuryWithdrawal ( treasuries, users, ) -import Spec.Util (effectFailsWith, effectSucceedsWith) import Test.Tasty (TestTree, testGroup) +import Test.Util (effectFailsWith, effectSucceedsWith) tests :: [TestTree] tests = diff --git a/agora-test/Spec/Governor.hs b/agora-test/Spec/Governor.hs index 0cd2557..4a86386 100644 --- a/agora-test/Spec/Governor.hs +++ b/agora-test/Spec/Governor.hs @@ -16,10 +16,10 @@ module Spec.Governor (tests) where import Agora.Governor (GovernorDatum (..), GovernorRedeemer (..)) import Agora.Governor.Scripts (governorPolicy, governorValidator) import Agora.Proposal (ProposalId (..)) -import Spec.Sample.Governor (createProposal, mintGATs, mintGST, mutateState) -import Spec.Sample.Shared qualified as Shared -import Spec.Util (policySucceedsWith, validatorSucceedsWith) +import Sample.Governor (createProposal, mintGATs, mintGST, mutateState) +import Sample.Shared qualified as Shared import Test.Tasty (TestTree, testGroup) +import Test.Util (policySucceedsWith, validatorSucceedsWith) -------------------------------------------------------------------------------- diff --git a/agora-test/Spec/Proposal.hs b/agora-test/Spec/Proposal.hs index ef14b0f..cb049ed 100644 --- a/agora-test/Spec/Proposal.hs +++ b/agora-test/Spec/Proposal.hs @@ -35,11 +35,11 @@ import Agora.Stake.Scripts (stakeValidator) import Plutarch.SafeMoney (Tagged (Tagged)) import Plutus.V1.Ledger.Api (ScriptContext (..), ScriptPurpose (..)) import PlutusTx.AssocMap qualified as AssocMap -import Spec.Sample.Proposal qualified as Proposal -import Spec.Sample.Shared (signer, signer2) -import Spec.Sample.Shared qualified as Shared -import Spec.Util (policySucceedsWith, validatorSucceedsWith) +import Sample.Proposal qualified as Proposal +import Sample.Shared (signer, signer2) +import Sample.Shared qualified as Shared import Test.Tasty (TestTree, testGroup) +import Test.Util (policySucceedsWith, validatorSucceedsWith) -------------------------------------------------------------------------------- diff --git a/agora-test/Spec/Stake.hs b/agora-test/Spec/Stake.hs index 6824b80..3a3eacd 100644 --- a/agora-test/Spec/Stake.hs +++ b/agora-test/Spec/Stake.hs @@ -24,9 +24,9 @@ import Agora.Stake.Scripts (stakePolicy, stakeValidator) -------------------------------------------------------------------------------- -import Spec.Sample.Stake (DepositWithdrawExample (DepositWithdrawExample, delta, startAmount), signer) -import Spec.Sample.Stake qualified as Stake -import Spec.Util (policyFailsWith, policySucceedsWith, toDatum, validatorFailsWith, validatorSucceedsWith) +import Sample.Stake (DepositWithdrawExample (DepositWithdrawExample, delta, startAmount), signer) +import Sample.Stake qualified as Stake +import Test.Util (policyFailsWith, policySucceedsWith, toDatum, validatorFailsWith, validatorSucceedsWith) -------------------------------------------------------------------------------- diff --git a/agora-test/Spec/Treasury.hs b/agora-test/Spec/Treasury.hs index dd1044a..0cd139f 100644 --- a/agora-test/Spec/Treasury.hs +++ b/agora-test/Spec/Treasury.hs @@ -37,10 +37,10 @@ import Plutus.V1.Ledger.Credential ( StakingCredential (StakingHash), ) import Plutus.V1.Ledger.Value qualified as Value -import Spec.Sample.Shared ( +import Sample.Shared ( trCredential, ) -import Spec.Sample.Treasury ( +import Sample.Treasury ( gatCs, gatTn, trCtxGATNameNotAddress, @@ -48,8 +48,8 @@ import Spec.Sample.Treasury ( validCtx, walletIn, ) -import Spec.Util (validatorFailsWith, validatorSucceedsWith) import Test.Tasty (TestTree, testGroup) +import Test.Util (validatorFailsWith, validatorSucceedsWith) tests :: [TestTree] tests = diff --git a/agora-test/Spec/Utils.hs b/agora-test/Spec/Utils.hs new file mode 100644 index 0000000..16e62d9 --- /dev/null +++ b/agora-test/Spec/Utils.hs @@ -0,0 +1,13 @@ +{- | +Module : Spec.Utils +Maintainer : emi@haskell.fyi +Description: Tests for utility functions in 'Agora.Utils'. + +Tests for utility functions in 'Agora.Utils'. +-} +module Spec.Utils (tests) where + +import Test.Tasty (TestTree) + +tests :: [TestTree] +tests = [] diff --git a/agora-test/Spec/Util.hs b/agora-testlib/Test/Util.hs similarity index 99% rename from agora-test/Spec/Util.hs rename to agora-testlib/Test/Util.hs index 31347e1..74e8ac6 100644 --- a/agora-test/Spec/Util.hs +++ b/agora-testlib/Test/Util.hs @@ -1,5 +1,5 @@ {- | -Module : Spec.Util +Module : Test.Util Maintainer : emi@haskell.fyi Description: Utility functions for testing Plutarch scripts with ScriptContext @@ -22,7 +22,7 @@ Utility functions for testing Plutarch scripts with ScriptContext: - 'scriptFails': checks that an arbitrary script `perror`s out. -} -module Spec.Util ( +module Test.Util ( -- * Testing utils scriptSucceeds, scriptFails, diff --git a/agora.cabal b/agora.cabal index 1a74a30..85a1f32 100644 --- a/agora.cabal +++ b/agora.cabal @@ -153,6 +153,27 @@ library pprelude hs-source-dirs: agora default-language: Haskell2010 +library agora-testlib + import: lang, deps, test-deps + exposed-modules: Test.Util + hs-source-dirs: agora-testlib + +library agora-sample + import: lang, deps, test-deps + build-depends: + , agora + , agora-testlib + + exposed-modules: + Sample.Effect.TreasuryWithdrawal + Sample.Governor + Sample.Proposal + Sample.Shared + Sample.Stake + Sample.Treasury + + hs-source-dirs: agora-sample + test-suite agora-test import: lang, deps, test-deps type: exitcode-stdio-1.0 @@ -164,17 +185,14 @@ test-suite agora-test Spec.Governor Spec.Model.MultiSig Spec.Proposal - Spec.Sample.Effect.TreasuryWithdrawal - Spec.Sample.Governor - Spec.Sample.Proposal - Spec.Sample.Shared - Spec.Sample.Stake - Spec.Sample.Treasury Spec.Stake Spec.Treasury - Spec.Util + Spec.Utils - build-depends: agora + build-depends: + , agora + , agora-sample + , agora-testlib benchmark agora-bench import: lang, deps