package jetbrains.mps.baseLanguage.collections.unittest.skip_take_test; /*Generated by MPS */ import junit.framework.TestCase; 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; public class SkipTakePage_Test extends TestCase { public void test_skip1() throws Exception { Iterable<Integer> s = 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 = 0; 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(Sequence.fromIterable(s).toListSequence().count(), 10); Assert.assertSame(Sequence.fromIterable(s).first(), 0); int i = 1; s = Sequence.fromIterable(s).skip(i); Assert.assertSame(Sequence.fromIterable(s).toListSequence().count(), 9); Assert.assertSame(Sequence.fromIterable(s).first(), 1); Assert.assertSame(Sequence.fromIterable(s).skip(5).first(), 6); } public void test_take1() throws Exception { Iterable<Integer> s = 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 = 0; 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(Sequence.fromIterable(s).toListSequence().count(), 10); Assert.assertSame(Sequence.fromIterable(s).first(), 0); s = Sequence.fromIterable(s).take(5); Assert.assertSame(Sequence.fromIterable(s).toListSequence().count(), 5); Assert.assertSame(Sequence.fromIterable(s).first(), 0); Assert.assertSame(Sequence.fromIterable(s).last(), 4); Assert.assertSame(Sequence.fromIterable(s).take(1).last(), 0); } public void test_takeSkip() throws Exception { Iterable<Integer> s = 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 = 0; 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; }; } }; } }); s = Sequence.fromIterable(s).skip(5).take(3); Assert.assertSame(Sequence.fromIterable(s).toListSequence().count(), 3); Assert.assertSame(Sequence.fromIterable(s).first(), 5); Assert.assertSame(Sequence.fromIterable(s).last(), 7); } public void test_page() throws Exception { Iterable<Integer> s = 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 = 0; 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; }; } }; } }); s = Sequence.fromIterable(s).page(5, 8); Assert.assertSame(Sequence.fromIterable(s).toListSequence().count(), 3); Assert.assertSame(Sequence.fromIterable(s).first(), 5); Assert.assertSame(Sequence.fromIterable(s).last(), 7); } }