|
1 | 1 | use std::borrow::Cow;
|
2 | 2 | use std::collections::TryReserveError::*;
|
| 3 | +use std::fmt::Debug; |
3 | 4 | use std::mem::size_of;
|
4 | 5 | use std::panic::{catch_unwind, AssertUnwindSafe};
|
5 | 6 | use std::vec::{Drain, IntoIter};
|
@@ -1588,3 +1589,56 @@ fn test_push_growth_strategy() {
|
1588 | 1589 | }
|
1589 | 1590 | }
|
1590 | 1591 | }
|
| 1592 | + |
| 1593 | +macro_rules! generate_assert_eq_vec_and_prim { |
| 1594 | + ($name:ident<$B:ident>($type:ty)) => { |
| 1595 | + fn $name<A: PartialEq<$B> + Debug, $B: Debug>(a: Vec<A>, b: $type) { |
| 1596 | + assert!(a == b); |
| 1597 | + assert_eq!(a, b); |
| 1598 | + } |
| 1599 | + }; |
| 1600 | +} |
| 1601 | + |
| 1602 | +generate_assert_eq_vec_and_prim! { assert_eq_vec_and_slice <B>(&[B]) } |
| 1603 | +generate_assert_eq_vec_and_prim! { assert_eq_vec_and_array_3<B>([B; 3]) } |
| 1604 | + |
| 1605 | +#[test] |
| 1606 | +fn partialeq_vec_and_prim() { |
| 1607 | + assert_eq_vec_and_slice(vec![1, 2, 3], &[1, 2, 3]); |
| 1608 | + assert_eq_vec_and_array_3(vec![1, 2, 3], [1, 2, 3]); |
| 1609 | +} |
| 1610 | + |
| 1611 | +macro_rules! assert_partial_eq_valid { |
| 1612 | + ($a2:ident, $a3:ident; $b2:ident, $b3: ident) => { |
| 1613 | + assert!($a2 == $b2); |
| 1614 | + assert!($a2 != $b3); |
| 1615 | + assert!($a3 != $b2); |
| 1616 | + assert!($a3 == $b3); |
| 1617 | + assert_eq!($a2, $b2); |
| 1618 | + assert_ne!($a2, $b3); |
| 1619 | + assert_ne!($a3, $b2); |
| 1620 | + assert_eq!($a3, $b3); |
| 1621 | + }; |
| 1622 | +} |
| 1623 | + |
| 1624 | +#[test] |
| 1625 | +fn partialeq_vec_full() { |
| 1626 | + let vec2: Vec<_> = vec![1, 2]; |
| 1627 | + let vec3: Vec<_> = vec![1, 2, 3]; |
| 1628 | + let slice2: &[_] = &[1, 2]; |
| 1629 | + let slice3: &[_] = &[1, 2, 3]; |
| 1630 | + let slicemut2: &[_] = &mut [1, 2]; |
| 1631 | + let slicemut3: &[_] = &mut [1, 2, 3]; |
| 1632 | + let array2: [_; 2] = [1, 2]; |
| 1633 | + let array3: [_; 3] = [1, 2, 3]; |
| 1634 | + let arrayref2: &[_; 2] = &[1, 2]; |
| 1635 | + let arrayref3: &[_; 3] = &[1, 2, 3]; |
| 1636 | + |
| 1637 | + assert_partial_eq_valid!(vec2,vec3; vec2,vec3); |
| 1638 | + assert_partial_eq_valid!(vec2,vec3; slice2,slice3); |
| 1639 | + assert_partial_eq_valid!(vec2,vec3; slicemut2,slicemut3); |
| 1640 | + assert_partial_eq_valid!(slice2,slice3; vec2,vec3); |
| 1641 | + assert_partial_eq_valid!(slicemut2,slicemut3; vec2,vec3); |
| 1642 | + assert_partial_eq_valid!(vec2,vec3; array2,array3); |
| 1643 | + assert_partial_eq_valid!(vec2,vec3; arrayref2,arrayref3); |
| 1644 | +} |
0 commit comments