Add failing test scenario for recursive types.
This commit is contained in:
parent
31c280552d
commit
e44f18bae5
|
@ -265,7 +265,7 @@ mod test {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn assert_validator(source_code: &str, json: serde_json::Value) {
|
fn assert_validator(source_code: &str, expected: serde_json::Value) {
|
||||||
let mut project = TestProject::new();
|
let mut project = TestProject::new();
|
||||||
|
|
||||||
let modules = CheckedModules::singleton(project.check(project.parse(source_code)));
|
let modules = CheckedModules::singleton(project.check(project.parse(source_code)));
|
||||||
|
@ -283,7 +283,9 @@ mod test {
|
||||||
let validator = Validator::from_checked_module(&modules, &mut generator, validator, def)
|
let validator = Validator::from_checked_module(&modules, &mut generator, validator, def)
|
||||||
.expect("Failed to create validator blueprint");
|
.expect("Failed to create validator blueprint");
|
||||||
|
|
||||||
assert_json_eq!(serde_json::to_value(&validator).unwrap(), json);
|
println!("{}", serde_json::to_string_pretty(&validator).unwrap());
|
||||||
|
|
||||||
|
assert_json_eq!(serde_json::to_value(&validator).unwrap(), expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -734,4 +736,64 @@ mod test {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn recursive_type() {
|
||||||
|
assert_validator(
|
||||||
|
r#"
|
||||||
|
pub type LinkedList<a> {
|
||||||
|
Nil
|
||||||
|
Cons(a, LinkedList<a>)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub type Foo {
|
||||||
|
Foo {
|
||||||
|
foo: LinkedList<Bool>,
|
||||||
|
}
|
||||||
|
Bar {
|
||||||
|
bar: Int,
|
||||||
|
baz: (ByteArray, List<LinkedList<Int>>)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
validator spend {
|
||||||
|
fn(datum: Foo, redeemer: LinkedList<Int>, ctx: Void) {
|
||||||
|
True
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
json!({
|
||||||
|
"redeemer": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/$defs/LinkedList_Int"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$defs": {
|
||||||
|
"LinkedList_Int": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"title": "Nil",
|
||||||
|
"dataType": "constructor",
|
||||||
|
"index": 0,
|
||||||
|
"fields": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Cons",
|
||||||
|
"dataType": "constructor",
|
||||||
|
"index": 1,
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"dataType": "integer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/LinkedList_Int"
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue