plutus_ledger_api/goldens/
v2.rs

1//! Golden test data or Plutus V2 types
2
3use num_bigint::BigInt;
4
5pub use super::v1::{
6    sample_address, sample_asset_class, sample_chain_pointer, sample_credential,
7    sample_currency_symbol, sample_datum, sample_datum_hash, sample_dcert,
8    sample_ed25519_pub_key_hash, sample_payment_pub_key_hash, sample_plutus_data,
9    sample_plutus_interval, sample_redeemer, sample_redeemer_hash, sample_script_hash,
10    sample_script_purpose, sample_staking_credential, sample_token_name, sample_transaction_hash,
11    sample_transaction_input, sample_value,
12};
13use crate::v2::{
14    assoc_map::AssocMap,
15    crypto::LedgerBytes,
16    datum::OutputDatum,
17    script::ScriptHash,
18    transaction::{ScriptContext, TransactionInfo, TransactionOutput, TxInInfo},
19};
20
21pub fn sample_output_datum() -> OutputDatum {
22    OutputDatum::InlineDatum(super::v1::sample_datum())
23}
24
25pub fn sample_transaction_output() -> TransactionOutput {
26    TransactionOutput {
27        address: super::v1::sample_address(),
28        value: super::v1::sample_value(),
29        datum: sample_output_datum(),
30        reference_script: Some(ScriptHash(LedgerBytes([0].repeat(28).to_vec()))),
31    }
32}
33
34pub fn sample_tx_in_info() -> TxInInfo {
35    TxInInfo {
36        reference: super::v1::sample_transaction_input(),
37        output: sample_transaction_output(),
38    }
39}
40
41pub fn sample_transaction_info() -> TransactionInfo {
42    TransactionInfo {
43        inputs: vec![sample_tx_in_info()],
44        outputs: vec![sample_transaction_output()],
45        fee: super::v1::sample_value(),
46        mint: super::v1::sample_value(),
47        d_cert: vec![super::v1::sample_dcert()],
48        wdrl: AssocMap::from([(super::v1::sample_staking_credential(), BigInt::from(12))]),
49        valid_range: super::v1::sample_plutus_interval(),
50        signatories: vec![super::v1::sample_payment_pub_key_hash()],
51        datums: AssocMap::from([(super::v1::sample_datum_hash(), super::v1::sample_datum())]),
52        redeemers: AssocMap::from([(
53            super::v1::sample_script_purpose(),
54            super::v1::sample_redeemer(),
55        )]),
56        id: super::v1::sample_transaction_hash(),
57        reference_inputs: vec![sample_tx_in_info()],
58    }
59}
60
61pub fn sample_script_context() -> ScriptContext {
62    ScriptContext {
63        tx_info: sample_transaction_info(),
64        purpose: super::v1::sample_script_purpose(),
65    }
66}