package jetbrains.mps.internalCollections.test.closures;
/*Generated by MPS */
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.internal.collections.runtime.ISequenceClosure;
import java.util.Iterator;
import jetbrains.mps.baseLanguage.closures.runtime.YieldingIterator;
import junit.framework.Assert;
import jetbrains.mps.internal.collections.runtime.IWhereFilter;
import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes;
import java.util.Collections;
public class Find_Test extends Util_Test {
public void test_findFirstLast() throws Exception {
Iterable<Integer> test = Sequence.fromClosure(new ISequenceClosure<Integer>() {
public Iterable<Integer> iterable() {
return new Iterable<Integer>() {
public Iterator<Integer> iterator() {
return new YieldingIterator<Integer>() {
private int __CP__ = 0;
protected boolean moveToNext() {
__loop__:
do {
__switch__:
switch (this.__CP__) {
case -1:
assert false : "Internal error";
return false;
case 2:
this._2_i = 1;
case 3:
if (!(_2_i <= 10)) {
this.__CP__ = 1;
break;
}
this.__CP__ = 4;
break;
case 5:
_2_i++;
this.__CP__ = 3;
break;
case 6:
this.__CP__ = 5;
this.yield(_2_i);
return true;
case 0:
this.__CP__ = 2;
break;
case 4:
this.__CP__ = 6;
break;
default:
break __loop__;
}
} while (true);
return false;
}
private int _2_i;
};
}
};
}
});
Assert.assertSame(2, Sequence.fromIterable(test).findFirst(new IWhereFilter<Integer>() {
public boolean accept(Integer it) {
return it % 2 == 0;
}
}));
_FunctionTypes._return_P1_E0<? extends Boolean, ? super Integer> cl = new _FunctionTypes._return_P1_E0<Boolean, Integer>() {
public Boolean invoke(Integer it) {
return it % 2 == 0;
}
};
Assert.assertSame(2, Sequence.fromIterable(test).findFirst(cl));
Assert.assertSame(10, Sequence.fromIterable(test).findLast(new IWhereFilter<Integer>() {
public boolean accept(Integer it) {
return it % 2 == 0;
}
}));
_FunctionTypes._return_P1_E0<? extends Boolean, ? super Integer> cl2 = new _FunctionTypes._return_P1_E0<Boolean, Integer>() {
public Boolean invoke(Integer it) {
return it % 2 == 0;
}
};
Assert.assertSame(2, Sequence.fromIterable(test).findFirst(cl2));
}
public void test_mps10458() throws Exception {
Assert.assertNull(Sequence.fromIterable(this.interfaces()).findFirst(new IWhereFilter<IInterface>() {
public boolean accept(IInterface it) {
return it != null;
}
}));
}
public void test_anyAll() throws Exception {
Iterable<Integer> test = Sequence.fromClosure(new ISequenceClosure<Integer>() {
public Iterable<Integer> iterable() {
return new Iterable<Integer>() {
public Iterator<Integer> iterator() {
return new YieldingIterator<Integer>() {
private int __CP__ = 0;
protected boolean moveToNext() {
__loop__:
do {
__switch__:
switch (this.__CP__) {
case -1:
assert false : "Internal error";
return false;
case 2:
this._2_i = 1;
case 3:
if (!(_2_i <= 10)) {
this.__CP__ = 1;
break;
}
this.__CP__ = 4;
break;
case 5:
_2_i++;
this.__CP__ = 3;
break;
case 6:
this.__CP__ = 5;
this.yield(_2_i);
return true;
case 0:
this.__CP__ = 2;
break;
case 4:
this.__CP__ = 6;
break;
default:
break __loop__;
}
} while (true);
return false;
}
private int _2_i;
};
}
};
}
});
Assert.assertTrue(Sequence.fromIterable(test).any(new IWhereFilter<Integer>() {
public boolean accept(Integer it) {
return it % 2 == 0;
}
}));
_FunctionTypes._return_P1_E0<? extends Boolean, ? super Integer> cl = new _FunctionTypes._return_P1_E0<Boolean, Integer>() {
public Boolean invoke(Integer it) {
return it % 2 == 0;
}
};
Assert.assertTrue(Sequence.fromIterable(test).any(cl));
Assert.assertFalse(Sequence.fromIterable(test).all(new IWhereFilter<Integer>() {
public boolean accept(Integer it) {
return it % 2 == 1;
}
}));
_FunctionTypes._return_P1_E0<? extends Boolean, ? super Integer> cl2 = new _FunctionTypes._return_P1_E0<Boolean, Integer>() {
public Boolean invoke(Integer it) {
return it % 2 == 1;
}
};
Assert.assertFalse(Sequence.fromIterable(test).all(cl2));
Assert.assertTrue(Sequence.fromIterable(test).all(new IWhereFilter<Integer>() {
public boolean accept(Integer it) {
return it >= 1 && it <= 10;
}
}));
Iterable<Integer> test2 = Sequence.fromClosure(new ISequenceClosure<Integer>() {
public Iterable<Integer> iterable() {
return new Iterable<Integer>() {
public Iterator<Integer> iterator() {
return new YieldingIterator<Integer>() {
private int __CP__ = 0;
protected boolean moveToNext() {
__loop__:
do {
__switch__:
switch (this.__CP__) {
case -1:
assert false : "Internal error";
return false;
case 2:
this.__CP__ = 1;
this.yield(42);
return true;
case 0:
this.__CP__ = 2;
break;
default:
break __loop__;
}
} while (true);
return false;
}
};
}
};
}
});
Assert.assertTrue(Sequence.fromIterable(test2).any(new IWhereFilter<Integer>() {
public boolean accept(Integer it) {
return it == 42;
}
}));
Assert.assertFalse(Sequence.fromIterable(test2).any(new IWhereFilter<Integer>() {
public boolean accept(Integer it) {
return it == 0;
}
}));
Assert.assertTrue(Sequence.fromIterable(test2).all(new IWhereFilter<Integer>() {
public boolean accept(Integer it) {
return it == 42;
}
}));
Iterable<Integer> test3 = Sequence.fromIterable(Collections.<Integer>emptyList());
Assert.assertFalse(Sequence.fromIterable(test3).any(new IWhereFilter<Integer>() {
public boolean accept(Integer it) {
return true;
}
}));
Assert.assertTrue(Sequence.fromIterable(test3).all(new IWhereFilter<Integer>() {
public boolean accept(Integer it) {
return false;
}
}));
}
public Find_Test() {
}
public Iterable<IInterface> interfaces() {
return null;
}
}