package jetbrains.mps.internalCollections.test.basicOperations; /*Generated by MPS */ import jetbrains.mps.internalCollections.test.closures.Util_Test; import java.util.List; import java.util.ArrayList; 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 Array_Test extends Util_Test { public void test_iterateArrayFor() throws Exception { int[] arr = new int[]{1, 2, 3, 4, 5}; List test = new ArrayList(); for (int i : arr) { test.add(i); } this.assertIterableEquals(this.expect5(), test); } public void test_iterateArrayYield() throws Exception { final int[] arr = new int[]{1, 2, 3, 4, 5}; 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_idx = 0; case 3: if (this._2_i_idx >= arr.length) { this.__CP__ = 1; break; } this._2_i = arr[this._2_i_idx++]; this.__CP__ = 4; break; case 5: this.__CP__ = 3; this.yield(_2_i); return true; case 0: this.__CP__ = 2; break; case 4: this.__CP__ = 5; break; default: break __loop__; } } while (true); return false; } private int _2_i; private int _2_i_idx; }; } }; } }); this.assertIterableEquals(this.expect5(), test); 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._2_i_idx = 0; case 3: if (this._2_i_idx >= arr.length) { this.__CP__ = 1; break; } this._2_i = arr[this._2_i_idx++]; this.__CP__ = 4; break; case 5: this.__CP__ = 3; this.yield(_2_i); return true; case 0: this.__CP__ = 2; break; case 4: this.__CP__ = 5; break; default: break __loop__; } } while (true); return false; } private int _2_i; private int _2_i_idx; }; } }; } }); this.assertIterableEquals(this.expect5(), test2); final String[] arr2 = new String[]{"A", "B", "C"}; Iterable<String> test3 = 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 2: this._2_s_idx = 0; case 3: if (this._2_s_idx >= arr2.length) { this.__CP__ = 1; break; } this._2_s = arr2[this._2_s_idx++]; this.__CP__ = 4; break; case 5: this.__CP__ = 3; this.yield(_2_s); return true; case 0: this.__CP__ = 2; break; case 4: this.__CP__ = 5; break; default: break __loop__; } } while (true); return false; } private String _2_s; private int _2_s_idx; }; } }; } }); this.assertIterableEquals(this.inputABC(), test3); Iterable<String> test4 = 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 2: this._2_s_idx = 0; case 3: if (this._2_s_idx >= arr2.length) { this.__CP__ = 1; break; } this._2_s = arr2[this._2_s_idx++]; this.__CP__ = 4; break; case 5: this.__CP__ = 3; this.yield(_2_s); return true; case 0: this.__CP__ = 2; break; case 4: this.__CP__ = 5; break; default: break __loop__; } } while (true); return false; } private String _2_s; private int _2_s_idx; }; } }; } }); this.assertIterableEquals(this.inputABC(), test4); } public Array_Test() { } }