add test with mixed constraints

This commit is contained in:
Michael Sippel 2025-06-04 23:03:45 +02:00
parent 0cd80c16d5
commit cb9b62b00c
Signed by: senvas
GPG key ID: F96CF119C34B64A6
2 changed files with 60 additions and 0 deletions
src/test/constraint_system

View file

@ -0,0 +1,59 @@
use {
crate::{dict::*, parser::*,
constraint_system::{
ConstraintSystem,
ConstraintPair,
ConstraintError
}
}
};
//<<<<>>>><<>><><<>><<<*>>><<>><><<>><<<<>>>>\\
#[test]
fn test_mixed_trait_bounds() {
let mut dict = BimapTypeDict::new();
dict.add_varname("T".into());
dict.add_varname("Radix".into());
assert_eq!(
ConstraintSystem::new(
// eq constraints
vec![],
// sub constraints
vec![
ConstraintPair {
addr: Vec::new(),
lhs : dict.parse(" ~ <PosInt 10 BigEndian> ~ <Seq <Digit 10>~Char~native.UInt8>").unwrap(),
rhs : dict.parse("<Seq T>").unwrap()
}
],
// trait constraints
vec![
ConstraintPair {
addr: Vec::new(),
lhs: dict.parse("T").unwrap(),
rhs: dict.parse("<Digit Radix>").unwrap(),
}
],
// parallel constraints
vec![]
).solve(),
Ok((
// ψ
vec![
dict.parse(" ~ <PosInt 10 BigEndian>").unwrap()
],
// σ
vec![
(dict.get_typeid(&"T".into()).unwrap(), dict.parse("<Digit 10>~Char~native.UInt8").unwrap()),
(dict.get_typeid(&"Radix".into()).unwrap(), dict.parse("10").unwrap())
].into_iter().collect()
))
);
}

View file

@ -3,3 +3,4 @@ pub mod sub_constraint;
pub mod trait_constraint;
pub mod par_cornstraint;
pub mod value_constraint;
pub mod mixed;