Support multi-validator in script context accept test.
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
use aiken/dict
|
||||
use aiken/transaction.{
|
||||
InlineDatum, Input, Output, OutputReference, ScriptContext, Spend, Spending,
|
||||
}
|
||||
use aiken/transaction/credential.{Address, ScriptCredential}
|
||||
use aiken/transaction/value
|
||||
|
||||
validator {
|
||||
fn mint_1(_tmp2: Void, ctx: ScriptContext) {
|
||||
True
|
||||
}
|
||||
}
|
||||
|
||||
validator {
|
||||
fn mint_2(_tmp2: Void, ctx: ScriptContext) {
|
||||
True
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
use aiken/dict
|
||||
use aiken/transaction.{
|
||||
InlineDatum, Input, Output, OutputReference, ScriptContext, ScriptInfo,
|
||||
ScriptPurpose, Spend, Spending,
|
||||
}
|
||||
use aiken/transaction/credential.{Address, ScriptCredential}
|
||||
use aiken/transaction/value
|
||||
|
||||
validator {
|
||||
fn spend(_tmp1: Void, _tmp2: Void, ctx: ScriptContext) {
|
||||
assert_transaction_id(ctx.transaction.id)
|
||||
|
||||
assert_script_info(ctx.info)
|
||||
|
||||
assert_inputs(ctx.transaction.inputs)
|
||||
|
||||
expect [] = ctx.transaction.outputs
|
||||
|
||||
expect [] = ctx.transaction.reference_inputs
|
||||
|
||||
expect [] = ctx.transaction.extra_signatories
|
||||
|
||||
expect 42 == ctx.transaction.fee
|
||||
|
||||
assert_redeemers(ctx.transaction.redeemers)
|
||||
|
||||
expect [] == dict.to_pairs(ctx.transaction.datums)
|
||||
|
||||
True
|
||||
}
|
||||
}
|
||||
|
||||
fn assert_transaction_id(id: ByteArray) {
|
||||
expect
|
||||
#"c6fbd346681a8f8337f6b3e51e6ec973f1509367eabc3a44c849af58a1d8471b" == id
|
||||
Void
|
||||
}
|
||||
|
||||
fn assert_script_info(info: ScriptInfo) {
|
||||
expect
|
||||
Spending(
|
||||
OutputReference {
|
||||
transaction_id: #"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
output_index: 0,
|
||||
},
|
||||
Some(void()),
|
||||
) == info
|
||||
Void
|
||||
}
|
||||
|
||||
fn assert_inputs(inputs: List<Input>) {
|
||||
expect [
|
||||
Input {
|
||||
output_reference: OutputReference { transaction_id, output_index: 0 },
|
||||
output: Output {
|
||||
address,
|
||||
value: resolved_input_value,
|
||||
datum: InlineDatum(_),
|
||||
reference_script: None,
|
||||
},
|
||||
},
|
||||
] = inputs
|
||||
|
||||
expect
|
||||
transaction_id == #"0000000000000000000000000000000000000000000000000000000000000000"
|
||||
|
||||
expect resolved_input_value == value.from_lovelace(1000000000)
|
||||
|
||||
expect Address {
|
||||
payment_credential: ScriptCredential(_),
|
||||
stake_credential: None,
|
||||
} = address
|
||||
|
||||
Void
|
||||
}
|
||||
|
||||
fn assert_redeemers(redeemers: Pairs<ScriptPurpose, Data>) {
|
||||
expect
|
||||
[
|
||||
Pair(Spend(
|
||||
OutputReference {
|
||||
transaction_id: #"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
output_index: 0,
|
||||
},
|
||||
),
|
||||
void()),
|
||||
] == redeemers
|
||||
Void
|
||||
}
|
||||
|
||||
fn void() -> Data {
|
||||
let void: Data = Void
|
||||
void
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
use aiken/dict
|
||||
use aiken/transaction.{
|
||||
InlineDatum, Input, Output, OutputReference, ScriptContext, Spend, Spending,
|
||||
}
|
||||
use aiken/transaction/credential.{Address, ScriptCredential}
|
||||
use aiken/transaction/value
|
||||
|
||||
validator {
|
||||
fn spend(_tmp1: Void, _tmp2: Void, ctx: ScriptContext) {
|
||||
let void: Data = Void
|
||||
|
||||
expect
|
||||
#"78ec148ea647cf9969446891af31939c5d57b275a2455706782c6183ef0b62f1" == ctx.transaction.id
|
||||
|
||||
expect
|
||||
Spending(
|
||||
OutputReference {
|
||||
transaction_id: #"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
output_index: 0,
|
||||
},
|
||||
Some(void),
|
||||
) == ctx.info
|
||||
|
||||
trace @"inputs": ctx.transaction.inputs
|
||||
|
||||
expect [
|
||||
Input {
|
||||
output_reference: OutputReference { transaction_id, output_index: 0 },
|
||||
output: Output {
|
||||
address,
|
||||
value: resolved_input_value,
|
||||
datum: InlineDatum(_),
|
||||
reference_script: None,
|
||||
},
|
||||
},
|
||||
] = ctx.transaction.inputs
|
||||
|
||||
expect
|
||||
transaction_id == #"0000000000000000000000000000000000000000000000000000000000000000"
|
||||
|
||||
expect resolved_input_value == value.from_lovelace(1000000000)
|
||||
|
||||
expect Address {
|
||||
payment_credential: ScriptCredential(_),
|
||||
stake_credential: None,
|
||||
} = address
|
||||
|
||||
expect [] = ctx.transaction.reference_inputs
|
||||
|
||||
expect [] = ctx.transaction.extra_signatories
|
||||
|
||||
expect 42 == ctx.transaction.fee
|
||||
|
||||
expect
|
||||
[
|
||||
Pair(Spend(
|
||||
OutputReference {
|
||||
transaction_id: #"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
output_index: 0,
|
||||
},
|
||||
),
|
||||
void),
|
||||
] == ctx.transaction.redeemers
|
||||
|
||||
expect [] == dict.to_pairs(ctx.transaction.datums)
|
||||
|
||||
True
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user