use tskit::{NodeFlags, RawFlags, SimplificationOptions};
fn example_node_flags() {
let f: RawFlags = 1000000;
let mut node_flags = NodeFlags::from(f);
assert_eq!(node_flags.bits(), f);
assert!(!node_flags.contains(NodeFlags::IS_SAMPLE));
node_flags.toggle(NodeFlags::IS_SAMPLE);
assert_ne!(node_flags.bits(), f);
node_flags.remove(NodeFlags::IS_SAMPLE);
assert_eq!(node_flags.bits(), f);
}
#[test]
fn test_example_node_flags() {
example_node_flags();
}
#[test]
fn test_bit_ops() {
let options = SimplificationOptions::default();
assert!(!options.contains(SimplificationOptions::KEEP_INPUT_ROOTS));
assert!((options & SimplificationOptions::KEEP_INPUT_ROOTS) == 0.into());
let options = options | SimplificationOptions::REDUCE_TO_SITE_TOPOLOGY;
assert!(!options.contains(SimplificationOptions::KEEP_INPUT_ROOTS));
assert!(options.contains(SimplificationOptions::REDUCE_TO_SITE_TOPOLOGY));
let options = options ^ SimplificationOptions::REDUCE_TO_SITE_TOPOLOGY;
assert!(!options.contains(SimplificationOptions::REDUCE_TO_SITE_TOPOLOGY));
let options = options ^ SimplificationOptions::REDUCE_TO_SITE_TOPOLOGY;
assert!(options.contains(SimplificationOptions::REDUCE_TO_SITE_TOPOLOGY));
let mut options = SimplificationOptions::default();
assert!(!options.contains(SimplificationOptions::KEEP_INPUT_ROOTS));
options |= SimplificationOptions::KEEP_INPUT_ROOTS;
assert!(options.contains(SimplificationOptions::KEEP_INPUT_ROOTS));
options &= SimplificationOptions::REDUCE_TO_SITE_TOPOLOGY;
assert_eq!(options, SimplificationOptions::default());
options |= SimplificationOptions::REDUCE_TO_SITE_TOPOLOGY;
assert_ne!(options, SimplificationOptions::default());
}