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; } }