use crate::{
Indegree,
Outdegree,
};
pub trait IsIsolated {
#[must_use]
fn is_isolated(&self, u: usize) -> bool;
}
impl<D> IsIsolated for D
where
D: Indegree + Outdegree,
{
fn is_isolated(&self, u: usize) -> bool {
self.is_sink(u) && self.is_source(u)
}
}
#[macro_export]
macro_rules! test_is_isolated {
($fixture:path) => {
use $fixture::{
bang_jensen_34,
bang_jensen_94,
bang_jensen_196,
kattis_builddeps,
kattis_cantinaofbabel_1,
kattis_cantinaofbabel_2,
kattis_escapewallmaria_1,
kattis_escapewallmaria_2,
kattis_escapewallmaria_3,
};
#[test]
fn is_isolated_bang_jensen_196() {
let digraph = bang_jensen_196();
assert!(!digraph.is_isolated(0));
assert!(!digraph.is_isolated(1));
assert!(!digraph.is_isolated(2));
assert!(!digraph.is_isolated(3));
assert!(!digraph.is_isolated(4));
assert!(!digraph.is_isolated(5));
assert!(!digraph.is_isolated(6));
assert!(!digraph.is_isolated(7));
}
#[test]
fn is_isolated_bang_jensen_34() {
let digraph = bang_jensen_34();
assert!(!digraph.is_isolated(0));
assert!(!digraph.is_isolated(1));
assert!(!digraph.is_isolated(2));
assert!(!digraph.is_isolated(3));
assert!(!digraph.is_isolated(4));
assert!(!digraph.is_isolated(5));
}
#[test]
fn is_isolated_bang_jensen_94() {
let digraph = bang_jensen_94();
assert!(!digraph.is_isolated(0));
assert!(!digraph.is_isolated(1));
assert!(!digraph.is_isolated(2));
assert!(!digraph.is_isolated(3));
assert!(!digraph.is_isolated(4));
assert!(!digraph.is_isolated(5));
assert!(!digraph.is_isolated(6));
}
#[test]
fn is_isolated_kattis_builddeps() {
let digraph = kattis_builddeps();
assert!(!digraph.is_isolated(0));
assert!(!digraph.is_isolated(1));
assert!(!digraph.is_isolated(2));
assert!(!digraph.is_isolated(3));
assert!(!digraph.is_isolated(4));
assert!(!digraph.is_isolated(5));
}
#[test]
fn is_isolated_kattis_cantinaofbabel_1() {
let digraph = kattis_cantinaofbabel_1();
assert!(!digraph.is_isolated(0));
assert!(!digraph.is_isolated(1));
assert!(!digraph.is_isolated(2));
assert!(!digraph.is_isolated(3));
assert!(!digraph.is_isolated(4));
assert!(!digraph.is_isolated(5));
assert!(!digraph.is_isolated(6));
assert!(!digraph.is_isolated(7));
assert!(!digraph.is_isolated(8));
assert!(!digraph.is_isolated(9));
assert!(!digraph.is_isolated(10));
assert!(!digraph.is_isolated(11));
}
#[test]
fn is_isolated_kattis_cantinaofbabel_2() {
let digraph = kattis_cantinaofbabel_2();
assert!(!digraph.is_isolated(0));
assert!(!digraph.is_isolated(1));
assert!(!digraph.is_isolated(2));
assert!(!digraph.is_isolated(3));
assert!(!digraph.is_isolated(4));
assert!(!digraph.is_isolated(5));
assert!(!digraph.is_isolated(6));
assert!(!digraph.is_isolated(7));
assert!(!digraph.is_isolated(8));
assert!(!digraph.is_isolated(9));
assert!(!digraph.is_isolated(10));
assert!(!digraph.is_isolated(11));
}
#[test]
fn is_isolated_kattis_escapewallmaria_1() {
let digraph = kattis_escapewallmaria_1();
assert!(digraph.is_isolated(0));
assert!(digraph.is_isolated(1));
assert!(digraph.is_isolated(2));
assert!(digraph.is_isolated(3));
assert!(digraph.is_isolated(4));
assert!(!digraph.is_isolated(5));
assert!(!digraph.is_isolated(6));
assert!(digraph.is_isolated(7));
assert!(digraph.is_isolated(8));
assert!(!digraph.is_isolated(9));
assert!(digraph.is_isolated(10));
assert!(digraph.is_isolated(11));
assert!(!digraph.is_isolated(12));
assert!(!digraph.is_isolated(13));
assert!(digraph.is_isolated(14));
assert!(digraph.is_isolated(15));
}
#[test]
fn is_isolated_kattis_escapewallmaria_2() {
let digraph = kattis_escapewallmaria_2();
assert!(digraph.is_isolated(0));
assert!(digraph.is_isolated(1));
assert!(digraph.is_isolated(2));
assert!(digraph.is_isolated(3));
assert!(digraph.is_isolated(4));
assert!(!digraph.is_isolated(5));
assert!(!digraph.is_isolated(6));
assert!(digraph.is_isolated(7));
assert!(digraph.is_isolated(8));
assert!(!digraph.is_isolated(9));
assert!(digraph.is_isolated(10));
assert!(digraph.is_isolated(11));
assert!(!digraph.is_isolated(12));
assert!(!digraph.is_isolated(13));
assert!(digraph.is_isolated(14));
assert!(digraph.is_isolated(15));
}
#[test]
fn is_isolated_kattis_escapewallmaria_3() {
let digraph = kattis_escapewallmaria_3();
assert!(digraph.is_isolated(0));
assert!(!digraph.is_isolated(1));
assert!(!digraph.is_isolated(2));
assert!(digraph.is_isolated(3));
assert!(digraph.is_isolated(4));
assert!(!digraph.is_isolated(5));
assert!(!digraph.is_isolated(6));
assert!(digraph.is_isolated(7));
assert!(digraph.is_isolated(8));
assert!(!digraph.is_isolated(9));
assert!(digraph.is_isolated(10));
assert!(digraph.is_isolated(11));
assert!(!digraph.is_isolated(12));
assert!(!digraph.is_isolated(13));
assert!(digraph.is_isolated(14));
assert!(digraph.is_isolated(15));
}
};
}