added tests for new function

This commit is contained in:
ripytide 2023-04-18 17:34:39 +01:00
parent 66b94825fd
commit d3bb40c3f2
No known key found for this signature in database
GPG Key ID: B2629F9EC7C2FE8C

View File

@ -2362,6 +2362,132 @@ mod tests {
None => assert_eq!(before, clone),
}
}
#[test]
fn insert_merge_touching_if_values_equal_tests() {
assert_insert_merge_touching_if_values_equal(
basic(),
(ii(0, 4), false),
Err(OverlapOrTryFromBoundsError::Overlap(OverlapError)),
None::<[_; 0]>,
);
assert_insert_merge_touching_if_values_equal(
basic(),
(ee(7, 10), false),
Ok(ie(7, 10)),
Some([
(ui(4), false),
(ee(5, 7), true),
(ie(7, 10), false),
(ie(14, 16), true),
]),
);
assert_insert_merge_touching_if_values_equal(
basic(),
(ee(7, 11), true),
Ok(ee(7, 11)),
Some([
(ui(4), false),
(ee(5, 7), true),
(ii(7, 7), false),
(ee(7, 11), true),
(ie(14, 16), true),
]),
);
assert_insert_merge_touching_if_values_equal(
basic(),
(ee(12, 13), true),
Ok(ee(12, 13)),
Some([
(ui(4), false),
(ee(5, 7), true),
(ii(7, 7), false),
(ee(12, 13), true),
(ie(14, 16), true),
]),
);
assert_insert_merge_touching_if_values_equal(
basic(),
(ee(13, 14), true),
Ok(ee(13, 16)),
Some([
(ui(4), false),
(ee(5, 7), true),
(ii(7, 7), false),
(ee(13, 16), true),
]),
);
assert_insert_merge_touching_if_values_equal(
basic(),
(ee(7, 14), false),
Ok(ie(7, 14)),
Some([
(ui(4), false),
(ee(5, 7), true),
(ie(7, 14), false),
(ie(14, 16), true),
]),
);
assert_insert_merge_touching_if_values_equal(
special(),
(mee(6, 7), true),
Ok(mee(6, 7)),
Some([
(mii(4, 6), false),
(mee(6, 7), true),
(mee(7, 8), true),
(mii(8, 12), false),
]),
);
assert_insert_merge_touching_if_values_equal(
special(),
(mii(6, 7), true),
Err(OverlapOrTryFromBoundsError::Overlap(OverlapError)),
None::<[_; 0]>,
);
assert_insert_merge_touching_if_values_equal(
special(),
(mee(12, 15), false),
Err(OverlapOrTryFromBoundsError::TryFromBounds(
TryFromBoundsError,
)),
None::<[_; 0]>,
);
assert_insert_merge_touching_if_values_equal(
special(),
(mii(12, 15), true),
Err(OverlapOrTryFromBoundsError::Overlap(OverlapError)),
None::<[_; 0]>,
);
}
fn assert_insert_merge_touching_if_values_equal<const N: usize, I, K, V>(
mut before: RangeBoundsMap<I, K, V>,
to_insert: (K, V),
result: Result<K, OverlapOrTryFromBoundsError>,
after: Option<[(K, V); N]>,
) where
I: Ord + Debug + Copy,
K: NiceRange<I> + TryFromBounds<I> + PartialEq + Debug,
V: Eq + Debug + Clone,
{
let clone = before.clone();
assert_eq!(
before.insert_merge_touching_if_values_equal(
to_insert.0,
to_insert.1
),
result
);
match after {
Some(after) => {
assert_eq!(
before,
RangeBoundsMap::from_slice_strict(after).unwrap()
)
}
None => assert_eq!(before, clone),
}
}
#[test]
fn insert_merge_overlapping_tests() {