use open_hypergraphs::category::*;
use open_hypergraphs::strict::open_hypergraph::*;
use crate::operations::strategy::*;
use crate::theory::meaningless::*;
use proptest::proptest;
proptest! {
#[test]
fn test_singleton((x, a, b) in arb_singleton_operation(arb_object(), arb_arrow())) {
let f = OpenHypergraph::singleton(x, a, b);
assert_eq!(f.h.x.len(), 1);
assert_eq!(f.h.s.values, f.s);
assert_eq!(f.h.t.values, f.t);
assert_eq!(f.h.s.values.source(), f.source().len());
assert_eq!(f.h.t.values.source(), f.target().len());
assert_eq!(f.h.w.len(), f.source().len() + f.target().len());
}
#[test]
fn test_tensor_operations(ops in arb_operations(arb_object(), arb_arrow())) {
let f = OpenHypergraph::tensor_operations(ops.clone());
assert_eq!(f.h.x.len(), ops.len());
assert_eq!(f.source(), ops.a.values);
assert_eq!(f.target(), ops.b.values);
assert_eq!(f.h.w.len(), ops.a.values.len() + ops.b.values.len());
}
}