package jetbrains.mps.internalCollections.test.basicOperations; /*Generated by MPS */ import jetbrains.mps.internalCollections.test.closures.Util_Test; import junit.framework.Assert; import jetbrains.mps.internal.collections.runtime.Sequence; import java.util.NoSuchElementException; import java.util.Iterator; import jetbrains.mps.internal.collections.runtime.IEnumerator; import java.util.List; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import java.util.Set; import jetbrains.mps.internal.collections.runtime.SetSequence; import java.util.HashSet; public class Iterator_Test extends Util_Test { public void test__null() throws Exception { Iterable<Integer> test = null; Assert.assertFalse(Sequence.fromIterable(test).iterator() == null); Assert.assertFalse(Sequence.fromIterable(test).iterator().hasNext()); Assert.assertFalse(Sequence.fromIterable(test).enumerator().moveNext()); try { Sequence.fromIterable(test).iterator().next(); Assert.fail(); } catch (NoSuchElementException e) { // expected exception } try { Sequence.fromIterable(test).enumerator().current(); Assert.fail(); } catch (NoSuchElementException e) { // expected exception } } public void test_singleton() throws Exception { Iterable<Integer> test = Sequence.<Integer>singleton(42); Iterator<Integer> is = Sequence.fromIterable(test).iterator(); Assert.assertTrue(is.hasNext()); Assert.assertSame(42, is.next()); Assert.assertFalse(is.hasNext()); try { is.next(); Assert.fail(); } catch (NoSuchElementException e) { // expected exception } IEnumerator<Integer> is2 = Sequence.fromIterable(test).enumerator(); Assert.assertTrue(is2.moveNext()); Assert.assertSame(42, is2.current()); Assert.assertFalse(is2.moveNext()); try { is2.current(); Assert.fail(); } catch (NoSuchElementException e) { // expected exception } } public void test_iterating() throws Exception { Iterable<String> test = this.inputABC(); String res = ""; for (Iterator<String> itr = Sequence.fromIterable(test).iterator(); itr.hasNext();) { res = res + itr.next(); } Assert.assertEquals("ABC", res); res = ""; for (IEnumerator<String> enm = Sequence.fromIterable(test).enumerator(); enm.moveNext();) { res = res + enm.current(); res = res + enm.current(); } Assert.assertEquals("AABBCC", res); } public void test_containerIterator() throws Exception { List<Integer> list = ListSequence.fromListAndArray(new ArrayList<Integer>(), 1, 2, 3); for (Iterator<Integer> cit = ListSequence.fromList(list).iterator(); cit.hasNext();) { cit.next(); cit.remove(); } Assert.assertTrue(ListSequence.fromList(list).isEmpty()); Set<Integer> set = SetSequence.fromSetAndArray(new HashSet<Integer>(), 1, 2, 3); for (Iterator<Integer> cit = SetSequence.fromSet(set).iterator(); cit.hasNext();) { cit.next(); cit.remove(); } Assert.assertTrue(SetSequence.fromSet(set).isEmpty()); } public void test_multiIterator() throws Exception { Iterable<Integer> seq10 = input10(); Iterable<Integer> seq01 = ListSequence.fromList(Sequence.fromIterable(seq10).toListSequence()).reversedList(); List<Integer> expected = ListSequence.fromListAndArray(new ArrayList<Integer>(), 11, 11, 11, 11, 11, 11, 11, 11, 11, 11); List<Integer> actual = ListSequence.fromList(new ArrayList<Integer>()); { Iterator<Integer> up_it = Sequence.fromIterable(seq10).iterator(); Iterator<Integer> down_it = Sequence.fromIterable(seq01).iterator(); Integer up_var; Integer down_var; while (up_it.hasNext() && down_it.hasNext()) { up_var = up_it.next(); down_var = down_it.next(); ListSequence.fromList(actual).addElement(up_var + down_var); } } assertIterableEquals(expected, actual); } public void test_multiIterator2() throws Exception { Iterable<Integer> seq10 = input10(); Iterable<Integer> seq5 = input5(); int sum = 0; { Iterator<Integer> first_it = Sequence.fromIterable(seq10).iterator(); Iterator<Integer> second_it = Sequence.fromIterable(seq5).iterator(); Integer first_var; Integer second_var; while (first_it.hasNext() && second_it.hasNext()) { first_var = first_it.next(); second_var = second_it.next(); sum += first_var + second_var; } } Assert.assertEquals(2 * (1 + 2 + 3 + 4 + 5), sum); } public Iterator_Test() { } }