![]() This new acceptance test is really meant to check for the behavior surrounding the optional datum. So I've added an extra expect on the received datum, and kept only assertions that were about or related to the datum. |
||
---|---|---|
.. | ||
ctx | ||
validators | ||
.gitignore | ||
README.md | ||
aiken.toml | ||
test.sh |
README.md
V3 Script Context Tests
This project contains a few handcrafted Plutus V3 validators and transactions
whose sole purpose is to test the interpretation of the ScriptContext
from
within an Aiken's validators.
So validators are meant to work hand-in-hand with an associated context. Because we can't have fully static context (since they contain the validator and its hash), we define templates.
Everything is a bit clunky, but steps have been captured in a test.sh
script
for convenience. The test still assumes a few things. For any
VALIDATOR_GROUP
:
-
There's a
ctx/{VALIDATOR_GROUP}/tx.template
andctx/{VALIDATOR_GROUP}/resolved_inputs.template
respectively. -
There's a corresponding validator
validators/{VALIDATOR_GROUP}.ak
-
Templates may reference variables using a mustache-template-like syntax
{{ ... }}
. Provided variables are:{VALIDATOR_GROUP}.{VALIDATOR_TITLE}.hash
{VALIDATOR_GROUP}.{VALIDATOR_TITLE}.cbor
Where
VALIDATOR_TITLE
corresponds to the validator Aiken's name.
How to use
./test.sh VALIDATOR_GROUP
![TIP] By default, this recompiles the project in --release mode, which can be long when iterating / testing. You can provide a binary to use as a second argument. For a dev build, just do:
./test.sh VALIDATOR_GROUP "cargo run --"
Test Coverage
-
Purpose
- spend
- mint
- withdraw
- publish
- voting
- proposing
-
Transaction body
- inputs
- reference inputs
- none
- some
- outputs
- none
- some
- fee
- mint
- certificates
- none
- some
- Register credential
- no deposit
- with deposit
- Unregister credential
- no deposit
- with deposit
- Delegate
- Register & delegate credential
- Register drep
- Unregister drep
- Update drep
- Register pool
- Retire pool
- Delegate CC
- Retire CC
- Register credential
- withdrawals
- none
- some
- validity range
- extra signatories
- none
- some
- redeemers
- datums
- votes
- none
- some
- proposal procedures
- none
- some
- current treasury
- with
- without
- treasury donation
- with
- without
-
Address
- type-0 (key | key)
- type-1 (script | key)
- type-2 (key | script)
- type-3 (script | script)
- type-4 (key | ptr)
- type-5 (script | ptr)
- type-6 (key | ø)
- type-7 (key | ø)
-
Value
- only ada
- multi-assets
-
Output datum
- none
- hash
- inline
-
Output script
- none
- inline
-
Governance Action
- parameter change
- with action id
- without action id
- hardfork initiation
- with action id
- without action id
- treasuryWithdrawals
- with constitution
- without constitution
- no confidence
- with action id
- without action id
- update committee
- with action id
- without action id
- new constitution
- with action id
- without action id
- info action
- parameter change
-
Vote
- No
- Yes
- Abstain
-
Voter
- CC
- DRep
- SPO
-
ChangedParameters
- txFeePerByte
- txFeeFixed
- maxBlockBodySize
- maxTxSize
- maxBlockHeaderSize
- stakeAddressDeposit
- stakePoolDeposit
- poolRetireMaxEpoch
- stakePoolTargetNum
- poolPledgeInfluence
- monetaryExpansion
- treasuryCut
- minPoolCost
- utxoCostPerByte
- costModels
- executionUnitPrices
- maxTxExecutionUnits
- maxBlockExecutionUnits
- maxValueSize
- collateralPercentage
- maxCollateralInputs
- poolVotingThresholds
- dRepVotingThresholds
- committeeMinSize
- committeeMaxTermLength
- govActionLifetime
- govActionDeposit
- dRepDeposit
- dRepActivity
- minFeeRefScriptCostPerByte
-
Constitution
- with guardrail script
- without guardrail script
-
Credential
- key
- script
-
Delegatee
- pool
- drep
- pool + drep
-
DRep
- key
- script
- abstain
- no confidence
-
Boundary
- closed
- open