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() {
}
}