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; public class Advanced_Test extends Util_Test { public void test_nestedYield() throws Exception { Iterable<String> test = Sequence.fromClosure(new ISequenceClosure<String>() { public Iterable<String> iterable() { return new Iterable<String>() { public Iterator<String> iterator() { return new YieldingIterator<String>() { private int __CP__ = 0; protected boolean moveToNext() { __loop__: do { __switch__: switch (this.__CP__) { case -1: assert false : "Internal error"; return false; case 4: this._4_s_it = Sequence.fromClosure(new ISequenceClosure<String>() { public Iterable<String> iterable() { return new Iterable<String>() { public Iterator<String> iterator() { return new YieldingIterator<String>() { private int __CP__ = 0; protected boolean moveToNext() { __loop__: do { __switch__: switch (this.__CP__) { case -1: assert false : "Internal error"; return false; case 4: if (_3_len > 0) { this.__CP__ = 5; break; } this.__CP__ = 1; break; case 6: this.__CP__ = 4; this.yield(_3_array[--_3_len]); return true; case 0: this._3_len = _3_array.length; this.__CP__ = 4; break; case 5: this.__CP__ = 6; break; default: break __loop__; } } while (true); return false; } private int _3_len; }; } }; } }).iterator(); case 5: if (!(this._4_s_it.hasNext())) { this.__CP__ = 1; break; } this._4_s = this._4_s_it.next(); this.__CP__ = 6; break; case 7: this.__CP__ = 5; this.yield(_4_s); return true; case 0: this._3_array = new String[]{"A", "B", "C"}; this.__CP__ = 4; break; case 6: this.__CP__ = 7; break; default: break __loop__; } } while (true); return false; } private String[] _3_array; private String _4_s; private Iterator<String> _4_s_it; }; } }; } }); this.assertIterableEquals(Sequence.fromArray(new String[]{"C", "B", "A"}), test); } public Advanced_Test() { } }