aboutsummaryrefslogtreecommitdiff
path: root/macros/src/util/iterator_ext.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-10-09 20:41:09 +0200
committerHampusM <hampus@hampusmat.com>2022-10-09 20:42:07 +0200
commitfd5b6786d29d056ff0721a59435b50005f13f05c (patch)
tree3839ff2ffa99a14d1aefb952a55f1cb05aa0f09e /macros/src/util/iterator_ext.rs
parent5b0c6a52022e67a2d9cee251b3d08b9cb2b5f6cb (diff)
test: add more unit tests
Diffstat (limited to 'macros/src/util/iterator_ext.rs')
-rw-r--r--macros/src/util/iterator_ext.rs57
1 files changed, 56 insertions, 1 deletions
diff --git a/macros/src/util/iterator_ext.rs b/macros/src/util/iterator_ext.rs
index 86db6cb..5001068 100644
--- a/macros/src/util/iterator_ext.rs
+++ b/macros/src/util/iterator_ext.rs
@@ -9,7 +9,7 @@ pub trait IteratorExt<Item>
impl<Iter> IteratorExt<Iter::Item> for Iter
where
Iter: Iterator,
- Iter::Item: Eq + Hash + Copy,
+ Iter::Item: Eq + Hash + Clone,
{
fn find_duplicate(&mut self) -> Option<Iter::Item>
{
@@ -26,3 +26,58 @@ where
None
}
}
+
+#[cfg(test)]
+mod tests
+{
+ use super::*;
+
+ #[test]
+ fn can_find_duplicate()
+ {
+ #[derive(Debug, PartialEq, Eq, Clone, Hash)]
+ struct Fruit
+ {
+ name: String,
+ }
+
+ assert_eq!(
+ vec![
+ Fruit {
+ name: "Apple".to_string(),
+ },
+ Fruit {
+ name: "Banana".to_string(),
+ },
+ Fruit {
+ name: "Apple".to_string(),
+ },
+ Fruit {
+ name: "Orange".to_string(),
+ },
+ ]
+ .iter()
+ .find_duplicate(),
+ Some(&Fruit {
+ name: "Apple".to_string()
+ })
+ );
+
+ assert_eq!(
+ vec![
+ Fruit {
+ name: "Banana".to_string(),
+ },
+ Fruit {
+ name: "Apple".to_string(),
+ },
+ Fruit {
+ name: "Orange".to_string(),
+ },
+ ]
+ .iter()
+ .find_duplicate(),
+ None
+ );
+ }
+}