mirror of
https://github.com/rust-embedded/heapless.git
synced 2025-09-28 13:00:26 +00:00
Merge branch 'master' into queue-clone
# Conflicts: # src/spsc/mod.rs
This commit is contained in:
commit
58f5a53b9d
@ -451,6 +451,35 @@ impl_!(u8, u8_sc);
|
||||
impl_!(u16, u16_sc);
|
||||
impl_!(usize, usize_sc);
|
||||
|
||||
impl<T, N, U, C, N2, U2, C2> PartialEq<Queue<T, N2, U2, C2>> for Queue<T, N, U, C>
|
||||
where
|
||||
T: PartialEq,
|
||||
N: ArrayLength<T>,
|
||||
U: sealed::Uxx,
|
||||
C: sealed::XCore,
|
||||
N2: ArrayLength<T>,
|
||||
U2: sealed::Uxx,
|
||||
C2: sealed::XCore,
|
||||
{
|
||||
fn eq(&self, other: &Queue<T, N2, U2, C2>) -> bool {
|
||||
self.len_usize() == other.len_usize()
|
||||
&& self
|
||||
.iter()
|
||||
.zip(other.iter())
|
||||
.all(|(v1, v2)| v1 == v2)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T, N, U, C> Eq for Queue<T, N, U, C>
|
||||
where
|
||||
T: Eq,
|
||||
N: ArrayLength<T>,
|
||||
U: sealed::Uxx,
|
||||
C: sealed::XCore,
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// An iterator over the items of a queue
|
||||
pub struct Iter<'a, T, N, U, C>
|
||||
where
|
||||
@ -719,6 +748,31 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn eq() {
|
||||
// generate two queues with same content
|
||||
// but different buffer alignment
|
||||
let mut rb1: Queue<i32, U4> = Queue::new();
|
||||
rb1.enqueue(0).unwrap();
|
||||
rb1.enqueue(0).unwrap();
|
||||
rb1.dequeue().unwrap();
|
||||
rb1.enqueue(0).unwrap();
|
||||
let mut rb2: Queue<i32, U4> = Queue::new();
|
||||
rb2.enqueue(0).unwrap();
|
||||
rb2.enqueue(0).unwrap();
|
||||
assert!(rb1 == rb2);
|
||||
// test for symmetry
|
||||
assert!(rb2 == rb1);
|
||||
// test for changes in content
|
||||
rb1.enqueue(0).unwrap();
|
||||
assert!(rb1 != rb2);
|
||||
rb2.enqueue(1).unwrap();
|
||||
assert!(rb1 != rb2);
|
||||
// test for refexive relation
|
||||
assert!(rb1 == rb1);
|
||||
assert!(rb2 == rb2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn hash_equality() {
|
||||
// generate two queues with same content
|
||||
|
Loading…
x
Reference in New Issue
Block a user