2025-08-27 23:59:19 +02:00
|
|
|
#[test]
|
|
|
|
|
fn prohibiting_set_1() {
|
2025-09-07 17:55:53 +02:00
|
|
|
use super::element::IdState::*;
|
|
|
|
|
use super::set::{PositiveSet, Set};
|
2025-08-27 23:59:19 +02:00
|
|
|
|
|
|
|
|
let r1r = Set::from(vec![2, 3, 4]);
|
|
|
|
|
let r1i = Set::from(vec![5, 6, 7]);
|
|
|
|
|
|
|
|
|
|
let r2r = Set::from(vec![2, 3, 11]);
|
|
|
|
|
let r2i = Set::from(vec![5, 6, 7]);
|
|
|
|
|
|
2025-09-07 17:55:53 +02:00
|
|
|
let mut prohibiting_set =
|
|
|
|
|
Set::prohibiting_set(&[r1r, r2r], &[r1i, r2i]).unwrap();
|
|
|
|
|
prohibiting_set.sort();
|
|
|
|
|
|
2025-09-11 02:49:14 +02:00
|
|
|
assert_eq!(prohibiting_set, vec![
|
|
|
|
|
PositiveSet::from([(2, Negative)]),
|
|
|
|
|
PositiveSet::from([(3, Negative)]),
|
|
|
|
|
PositiveSet::from([(4, Negative), (11, Negative)]),
|
|
|
|
|
PositiveSet::from([(5, Positive)]),
|
|
|
|
|
PositiveSet::from([(6, Positive)]),
|
|
|
|
|
PositiveSet::from([(7, Positive)]),
|
|
|
|
|
])
|
2025-08-27 23:59:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn prohibiting_set_2() {
|
2025-09-07 17:55:53 +02:00
|
|
|
use super::element::IdState::*;
|
|
|
|
|
use super::set::{PositiveSet, Set};
|
2025-08-27 23:59:19 +02:00
|
|
|
|
|
|
|
|
let r1r = Set::from(vec![1]);
|
|
|
|
|
let r1i = Set::from(vec![2]);
|
|
|
|
|
|
|
|
|
|
let r2r = Set::from(vec![1]);
|
|
|
|
|
let r2i = Set::from(vec![3]);
|
|
|
|
|
|
2025-09-07 17:55:53 +02:00
|
|
|
let mut prohibiting_set =
|
|
|
|
|
Set::prohibiting_set(&[r1r, r2r], &[r1i, r2i]).unwrap();
|
|
|
|
|
prohibiting_set.sort();
|
|
|
|
|
|
2025-09-11 02:49:14 +02:00
|
|
|
assert_eq!(prohibiting_set, vec![
|
|
|
|
|
PositiveSet::from([(1, Negative)]),
|
|
|
|
|
PositiveSet::from([(2, Positive), (3, Positive)]),
|
|
|
|
|
])
|
2025-08-27 23:59:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn prohibiting_set_3() {
|
2025-09-07 17:55:53 +02:00
|
|
|
use super::element::IdState::*;
|
|
|
|
|
use super::set::{PositiveSet, Set};
|
2025-08-27 23:59:19 +02:00
|
|
|
|
|
|
|
|
let r1r = Set::from(vec![1]);
|
|
|
|
|
let r1i = Set::from(vec![2]);
|
|
|
|
|
|
|
|
|
|
let r2r = Set::from(vec![3]);
|
|
|
|
|
let r2i = Set::from(vec![1]);
|
|
|
|
|
|
2025-09-07 17:55:53 +02:00
|
|
|
let mut prohibiting_set =
|
|
|
|
|
Set::prohibiting_set(&[r1r, r2r], &[r1i, r2i]).unwrap();
|
|
|
|
|
prohibiting_set.sort();
|
|
|
|
|
|
2025-09-11 02:49:14 +02:00
|
|
|
assert_eq!(prohibiting_set, vec![
|
|
|
|
|
PositiveSet::from([(1, Positive), (2, Positive)]),
|
|
|
|
|
PositiveSet::from([(1, Negative), (3, Negative)]),
|
|
|
|
|
PositiveSet::from([(2, Positive), (3, Negative)]),
|
|
|
|
|
])
|
2025-09-07 17:55:53 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn prohibiting_set_4() {
|
|
|
|
|
use super::element::IdState::*;
|
|
|
|
|
use super::set::{PositiveSet, Set};
|
|
|
|
|
|
|
|
|
|
let r1r = Set::from(vec![1]);
|
|
|
|
|
let r1i = Set::from(vec![2]);
|
2025-08-27 23:59:19 +02:00
|
|
|
|
2025-09-07 17:55:53 +02:00
|
|
|
let r2r = Set::from(vec![3]);
|
|
|
|
|
let r2i = Set::from(vec![4]);
|
|
|
|
|
|
|
|
|
|
let r3r = Set::from(vec![5]);
|
|
|
|
|
let r3i = Set::from(vec![6]);
|
|
|
|
|
|
|
|
|
|
let mut prohibiting_set =
|
|
|
|
|
Set::prohibiting_set(&[r1r, r2r, r3r], &[r1i, r2i, r3i]).unwrap();
|
|
|
|
|
prohibiting_set.sort();
|
|
|
|
|
|
2025-09-11 02:49:14 +02:00
|
|
|
assert_eq!(prohibiting_set, vec![
|
|
|
|
|
PositiveSet::from([(1, Negative), (3, Negative), (5, Negative)]),
|
|
|
|
|
PositiveSet::from([(1, Negative), (3, Negative), (6, Positive)]),
|
|
|
|
|
PositiveSet::from([(1, Negative), (4, Positive), (5, Negative)]),
|
|
|
|
|
PositiveSet::from([(1, Negative), (4, Positive), (6, Positive)]),
|
|
|
|
|
PositiveSet::from([(2, Positive), (3, Negative), (5, Negative)]),
|
|
|
|
|
PositiveSet::from([(2, Positive), (3, Negative), (6, Positive)]),
|
|
|
|
|
PositiveSet::from([(2, Positive), (4, Positive), (5, Negative)]),
|
|
|
|
|
PositiveSet::from([(2, Positive), (4, Positive), (6, Positive)]),
|
|
|
|
|
])
|
2025-08-27 23:59:19 +02:00
|
|
|
}
|
2025-09-08 19:04:26 +02:00
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn prohibiting_set_5() {
|
|
|
|
|
use super::element::IdState::*;
|
|
|
|
|
use super::set::{PositiveSet, Set};
|
|
|
|
|
|
|
|
|
|
let r1r = Set::from(vec![1]);
|
|
|
|
|
let r1i = Set::from(vec![2]);
|
|
|
|
|
|
|
|
|
|
let r2r = Set::from(vec![1, 2]);
|
|
|
|
|
let r2i = Set::from(vec![]);
|
|
|
|
|
|
|
|
|
|
let mut prohibiting_set =
|
|
|
|
|
Set::prohibiting_set(&[r1r, r2r], &[r1i, r2i]).unwrap();
|
|
|
|
|
prohibiting_set.sort();
|
|
|
|
|
|
2025-09-10 22:41:40 +02:00
|
|
|
assert_eq!(prohibiting_set, vec![PositiveSet::from([(1, Negative)]),])
|
2025-09-08 19:04:26 +02:00
|
|
|
}
|