Fix test_framework tests trying to implement function on foreign type.

This commit is contained in:
KtorZ 2024-08-29 13:48:57 +02:00
parent c21466831c
commit 79cf0b8d97
No known key found for this signature in database
GPG Key ID: 33173CB6F77F4277
3 changed files with 107 additions and 100 deletions

View File

@ -12,6 +12,7 @@ authors = [
"KtorZ <matthias.benkort@gmail.com>", "KtorZ <matthias.benkort@gmail.com>",
] ]
rust-version = "1.66.1" rust-version = "1.66.1"
build = "build.rs"
[dependencies] [dependencies]
blst = "0.3.11" blst = "0.3.11"

View File

@ -274,7 +274,7 @@ impl PropertyTest {
}) })
} }
fn run_n_times<'a>( pub fn run_n_times<'a>(
&'a self, &'a self,
remaining: &mut usize, remaining: &mut usize,
initial_prng: Prng, initial_prng: Prng,
@ -617,7 +617,7 @@ impl<'a> Counterexample<'a> {
/// - Sorting chunks in ascending order /// - Sorting chunks in ascending order
/// - Swapping nearby pairs /// - Swapping nearby pairs
/// - Redistributing values between nearby pairs /// - Redistributing values between nearby pairs
fn simplify(&mut self) { pub fn simplify(&mut self) {
let mut prev; let mut prev;
loop { loop {

View File

@ -5,22 +5,28 @@ mod test {
utils, utils,
}; };
use aiken_lang::{ use aiken_lang::{
ast::{Definition, ModuleKind, TraceLevel, Tracing}, ast::{DataTypeKey, Definition, ModuleKind, TraceLevel, Tracing, TypedDataType},
builtins, builtins,
expr::UntypedExpr,
format::Formatter, format::Formatter,
gen_uplc::CodeGenerator,
line_numbers::LineNumbers, line_numbers::LineNumbers,
parser::{self, extra::ModuleExtra}, parser::{self, extra::ModuleExtra},
plutus_version::PlutusVersion, plutus_version::PlutusVersion,
test_framework::*, test_framework::*,
IdGenerator, IdGenerator,
}; };
use indexmap::IndexMap;
use indoc::indoc; use indoc::indoc;
use std::collections::HashMap; use std::{
collections::{BTreeMap, HashMap},
path::PathBuf,
};
use uplc::PlutusData;
const TEST_KIND: ModuleKind = ModuleKind::Lib; const TEST_KIND: ModuleKind = ModuleKind::Lib;
impl Test { pub fn test_from_source(src: &str) -> (Test, IndexMap<DataTypeKey, TypedDataType>) {
pub fn from_source(src: &str) -> (Self, IndexMap<DataTypeKey, TypedDataType>) {
let id_gen = IdGenerator::new(); let id_gen = IdGenerator::new();
let module_name = ""; let module_name = "";
@ -88,7 +94,7 @@ mod test {
); );
( (
Self::from_function_definition( Test::from_function_definition(
&mut generator, &mut generator,
test.to_owned(), test.to_owned(),
module_name.to_string(), module_name.to_string(),
@ -97,7 +103,6 @@ mod test {
data_types, data_types,
) )
} }
}
fn property(src: &str) -> (PropertyTest, impl Fn(PlutusData) -> String) { fn property(src: &str) -> (PropertyTest, impl Fn(PlutusData) -> String) {
let prelude = indoc! { r#" let prelude = indoc! { r#"
@ -191,7 +196,7 @@ mod test {
let src = format!("{prelude}\n{src}"); let src = format!("{prelude}\n{src}");
match Test::from_source(&src) { match test_from_source(&src) {
(Test::PropertyTest(test), data_types) => { (Test::PropertyTest(test), data_types) => {
let type_info = test.fuzzer.type_info.clone(); let type_info = test.fuzzer.type_info.clone();
@ -210,11 +215,13 @@ mod test {
} }
} }
impl PropertyTest { fn expect_failure<'a>(
fn expect_failure<'a>(&'a self, plutus_version: &'a PlutusVersion) -> Counterexample<'a> { prop: &'a PropertyTest,
plutus_version: &'a PlutusVersion,
) -> Counterexample<'a> {
let mut labels = BTreeMap::new(); let mut labels = BTreeMap::new();
let mut remaining = PropertyTest::DEFAULT_MAX_SUCCESS; let mut remaining = PropertyTest::DEFAULT_MAX_SUCCESS;
match self.run_n_times( match prop.run_n_times(
&mut remaining, &mut remaining,
Prng::from_seed(42), Prng::from_seed(42),
&mut labels, &mut labels,
@ -224,7 +231,6 @@ mod test {
_ => panic!("expected property to fail but it didn't."), _ => panic!("expected property to fail but it didn't."),
} }
} }
}
#[test] #[test]
fn test_prop_basic() { fn test_prop_basic() {
@ -290,7 +296,7 @@ mod test {
"#}); "#});
let plutus_version = PlutusVersion::default(); let plutus_version = PlutusVersion::default();
let mut counterexample = prop.expect_failure(&plutus_version); let mut counterexample = expect_failure(&prop, &plutus_version);
counterexample.simplify(); counterexample.simplify();
@ -318,7 +324,7 @@ mod test {
"#}); "#});
let plutus_version = PlutusVersion::default(); let plutus_version = PlutusVersion::default();
let mut counterexample = prop.expect_failure(&plutus_version); let mut counterexample = expect_failure(&prop, &plutus_version);
counterexample.simplify(); counterexample.simplify();
@ -335,7 +341,7 @@ mod test {
"#}); "#});
let plutus_version = PlutusVersion::default(); let plutus_version = PlutusVersion::default();
let mut counterexample = prop.expect_failure(&plutus_version); let mut counterexample = expect_failure(&prop, &plutus_version);
counterexample.simplify(); counterexample.simplify();
@ -363,7 +369,7 @@ mod test {
"#}); "#});
let plutus_version = PlutusVersion::default(); let plutus_version = PlutusVersion::default();
let mut counterexample = prop.expect_failure(&plutus_version); let mut counterexample = expect_failure(&prop, &plutus_version);
counterexample.simplify(); counterexample.simplify();
@ -391,7 +397,7 @@ mod test {
"#}); "#});
let plutus_version = PlutusVersion::default(); let plutus_version = PlutusVersion::default();
let mut counterexample = prop.expect_failure(&plutus_version); let mut counterexample = expect_failure(&prop, &plutus_version);
counterexample.simplify(); counterexample.simplify();
@ -422,7 +428,7 @@ mod test {
"#}); "#});
let plutus_version = PlutusVersion::default(); let plutus_version = PlutusVersion::default();
let mut counterexample = prop.expect_failure(&plutus_version); let mut counterexample = expect_failure(&prop, &plutus_version);
counterexample.simplify(); counterexample.simplify();
@ -458,7 +464,7 @@ mod test {
let plutus_version = PlutusVersion::default(); let plutus_version = PlutusVersion::default();
let mut counterexample = prop.expect_failure(&plutus_version); let mut counterexample = expect_failure(&prop, &plutus_version);
counterexample.simplify(); counterexample.simplify();
@ -493,7 +499,7 @@ mod test {
"#}); "#});
let plutus_version = PlutusVersion::default(); let plutus_version = PlutusVersion::default();
let mut counterexample = prop.expect_failure(&plutus_version); let mut counterexample = expect_failure(&prop, &plutus_version);
counterexample.simplify(); counterexample.simplify();
@ -528,7 +534,7 @@ mod test {
"#}); "#});
let plutus_version = PlutusVersion::default(); let plutus_version = PlutusVersion::default();
let mut counterexample = prop.expect_failure(&plutus_version); let mut counterexample = expect_failure(&prop, &plutus_version);
counterexample.simplify(); counterexample.simplify();