From da35bca152768b638cfe356a1881f9f707c03842 Mon Sep 17 00:00:00 2001 From: John Kozlov Date: Sun, 22 Sep 2013 15:40:31 +0700 Subject: [PATCH] sameElements --- .../com/github/xtension/IterableExtensions.xtend | 7 +++++++ .../com/github/xtension/IteratorExtensions.xtend | 13 +++++++++++++ .../github/xtension/TestIterableExtensions.xtend | 9 +++++++++ 3 files changed, 29 insertions(+) diff --git a/src/main/java/com/github/xtension/IterableExtensions.xtend b/src/main/java/com/github/xtension/IterableExtensions.xtend index 21b66e9..a526795 100644 --- a/src/main/java/com/github/xtension/IterableExtensions.xtend +++ b/src/main/java/com/github/xtension/IterableExtensions.xtend @@ -569,6 +569,13 @@ final class IterableExtensions { } } + /** + * Checks if the other iterable contains the same elements in the same order as this iterable. + */ + def static boolean sameElements(Iterable iterable, Iterable other) { + iterable.iterator.sameElements(other.iterator) + } + /** * Sums up the elements of this iterable. */ diff --git a/src/main/java/com/github/xtension/IteratorExtensions.xtend b/src/main/java/com/github/xtension/IteratorExtensions.xtend index 81b1531..4c779db 100644 --- a/src/main/java/com/github/xtension/IteratorExtensions.xtend +++ b/src/main/java/com/github/xtension/IteratorExtensions.xtend @@ -568,6 +568,19 @@ final class IteratorExtensions { } } + /** + * Checks if the other iterator contains the same elements in the same order as this iterator. + */ + def static boolean sameElements(Iterator iterator, Iterator other) { + while (iterator.hasNext && other.hasNext) { + if (iterator.next != other.next) { + return false + } + } + + !iterator.hasNext && !other.hasNext + } + /** * Sums up the elements of this iterator. */ diff --git a/src/test/java/com/github/xtension/TestIterableExtensions.xtend b/src/test/java/com/github/xtension/TestIterableExtensions.xtend index 75903fe..a2c4aec 100644 --- a/src/test/java/com/github/xtension/TestIterableExtensions.xtend +++ b/src/test/java/com/github/xtension/TestIterableExtensions.xtend @@ -192,6 +192,15 @@ class TestIterableExtensions { org.assertj.guava.api.Assertions::assertThat(new ArrayList().maxByOptional[-it]).isAbsent } + @Test + def void sameElements() { + assertThat(#[].sameElements(#[])).isTrue + assertThat(#[1,2,3].sameElements(#[1,2,3])).isTrue + assertThat(#[1,2,3].sameElements(#[1,3,2])).isFalse + assertThat(#[1,2,3].sameElements(#[1,2,3,4])).isFalse + assertThat(#[1,2,3,4].sameElements(#[1,2,3])).isFalse + } + @Test def void sumInt() { assertThat(#[1,2,3].sumInt).isEqualTo(6)