Support multi-validator in script context accept test.

This commit is contained in:
KtorZ
2024-08-10 14:11:24 +02:00
parent b158469144
commit eea8dc7d0a
15 changed files with 266 additions and 98 deletions

View File

@@ -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
}
}

View File

@@ -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
}

View File

@@ -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
}
}