use relmath::{BinaryRelation, UnaryRelation};
#[test]
fn recognizes_partial_orders() {
let divides =
BinaryRelation::from_pairs([(1_u8, 1_u8), (1, 2), (1, 4), (2, 2), (2, 4), (4, 4)]);
let carrier = UnaryRelation::from_values([1_u8, 2_u8, 4_u8]);
assert!(divides.is_reflexive(&carrier));
assert!(divides.is_antisymmetric());
assert!(divides.is_transitive());
assert!(divides.is_partial_order(&carrier));
assert!(!divides.is_equivalence(&carrier));
}
#[test]
fn rejects_symmetric_two_cycles_as_partial_orders() {
let related = BinaryRelation::from_pairs([(1_u8, 1_u8), (1, 2), (2, 1), (2, 2)]);
let carrier = UnaryRelation::from_values([1_u8, 2_u8]);
assert!(!related.is_partial_order(&carrier));
}