use geoit::governance;
use geoit::*;
fn main() {
let gov = standard_registry().instantiate_family("CGA", 2).unwrap();
println!("CGA(2) signature: {}", gov.sig);
println!(
"Classes: {}, Constructions: {}",
gov.geom_classes.len(),
gov.constructions.len()
);
let point_mv = gov
.construct(0, &[Scalar::from(3), Scalar::from(4)])
.unwrap();
let geoit = governance::govern(&point_mv, &gov, 0).unwrap();
println!("Satisfied: {}", geoit.is_satisfied());
println!("Phase: {:?}", geoit.phase());
println!("Profile: {}", geoit.profile());
let params = geoit.read_all().unwrap();
println!("Extracted params: {:?}", params);
assert_eq!(params, vec![Scalar::from(3), Scalar::from(4)]);
let gov3 = standard_registry().instantiate_family("CGA", 3).unwrap();
let p3 = gov3
.construct(0, &[Scalar::from(1), Scalar::from(2), Scalar::from(3)])
.unwrap();
let g3 = governance::govern(&p3, &gov3, 0).unwrap();
println!("CGA(3) point governed: {}", g3.is_satisfied());
}