package jetbrains.mps.internalCollections.test.compareOperations;
/*Generated by MPS */
import jetbrains.mps.internalCollections.test.closures.Util_Test;
import jetbrains.mps.internal.collections.runtime.ISequence;
import jetbrains.mps.internal.collections.runtime.Sequence;
import java.util.Arrays;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import java.util.ArrayList;
import java.util.Iterator;
import junit.framework.Assert;
import java.util.NoSuchElementException;
public class SubtractTest_Test extends Util_Test {
public void test_subtractMethod() throws Exception {
ISequence<Integer> input = Sequence.fromArray(1, 2, 2, 3, 3, 3, 4);
ISequence<Integer> test = input.subtract(Sequence.fromArray(2, 3, 3, 4, 5));
this.assertIterableEqualsIgnoreOrder(Arrays.asList(1, 2, 3), test);
}
public void test_subtractOperation() throws Exception {
Iterable<Integer> input = Arrays.asList(1, 2, 2, 3, 3, 3, 4, 4);
Iterable<Integer> test = Sequence.fromIterable(input).subtract(ListSequence.fromList(Arrays.asList(2, 3, 4, 4, 5)));
this.assertIterableEqualsIgnoreOrder(Arrays.asList(1, 2, 3, 3), test);
}
public void test_subtractOpCovariant() throws Exception {
Foo foo1 = new Foo();
Bar bar1 = new Bar();
Bar bar2 = new Bar();
Bar bar3 = new Bar();
Foo foo2 = bar2;
Foo foo3 = bar1;
Iterable<Foo> first = ListSequence.fromListAndArray(new ArrayList<Foo>(), foo1, foo3, foo2);
Iterable<Bar> second = Sequence.fromArray(new Bar[]{bar1, bar3, bar2});
Iterable<Foo> res = Sequence.fromIterable(first).subtract(Sequence.fromIterable(second));
assertIterableEquals(Sequence.fromArray(new Foo[]{foo1}), res);
}
public void test_nextWithoutHasNext() throws Exception {
Iterator<Integer> it = ListSequence.fromList(ListSequence.fromListAndArray(new ArrayList<Integer>(), 1, 2, 3, 4, 5)).subtract(ListSequence.fromList(ListSequence.fromListAndArray(new ArrayList<Integer>(), 3, 2))).iterator();
Assert.assertSame(1, it.next());
Assert.assertSame(4, it.next());
Assert.assertSame(5, it.next());
Assert.assertFalse(it.hasNext());
try {
it.next();
Assert.fail();
} catch (NoSuchElementException e) {
// expected exception
}
}
}