20250320 finished.
This commit is contained in:
@@ -6,3 +6,5 @@ pub mod vec_string;
|
||||
pub mod tree;
|
||||
#[macro_use]
|
||||
pub mod point;
|
||||
#[macro_use]
|
||||
pub mod vec_equal;
|
||||
|
51
src/util/vec_equal.rs
Normal file
51
src/util/vec_equal.rs
Normal file
@@ -0,0 +1,51 @@
|
||||
use std::collections::HashSet;
|
||||
use std::hash::Hash;
|
||||
use std::iter::FromIterator;
|
||||
|
||||
pub fn assert_array_unorder_equal<T>(a: &Vec<T>, b: &Vec<T>)
|
||||
where
|
||||
T: Eq,
|
||||
T: Hash,
|
||||
{
|
||||
assert_eq!(a.len(), b.len());
|
||||
|
||||
let set: HashSet<&T> = HashSet::from_iter(a.into_iter());
|
||||
|
||||
for i in b.iter() {
|
||||
assert!(set.contains(i));
|
||||
}
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! assert_array_unorder_equal {
|
||||
($left:expr, $right:expr $(,)?) => {
|
||||
match (&$left, &$right) {
|
||||
(left_value, right_value) => {
|
||||
$crate::util::vec_equal::assert_array_unorder_equal(left_value, right_value);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
pub fn assert_inner_array_unorder_equal<T>(a: &Vec<Vec<T>>, b: &Vec<Vec<T>>)
|
||||
where
|
||||
T: Eq,
|
||||
T: Hash,
|
||||
{
|
||||
assert_eq!(a.len(), b.len());
|
||||
|
||||
for (i, j) in a.iter().zip(b.iter()) {
|
||||
assert_array_unorder_equal(i, j);
|
||||
}
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! assert_inner_array_unorder_equal {
|
||||
($left:expr, $right:expr $(,)?) => {
|
||||
match (&$left, &$right) {
|
||||
(left_value, right_value) => {
|
||||
$crate::util::vec_equal::assert_inner_array_unorder_equal(left_value, right_value);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user