public void ComplexScript1() { CSharpContext context = new CSharpContext(ParserContextBehavior.Easy); string output = ""; context.AssignmentPermissions = AssignmentPermissions.All; context.Set("f", new Action <int>(delegate(int i) { output += i; })); int[] array = new int[50]; context.Set("array", array); for (int i = 0; i < array.Length; i++) { array[i] = i + 1; } Random rnd = new Random(); for (int i = 0; i < array.Length - 1; i++) { int idx = rnd.Next(i + 1, array.Length - 1); int tmp = array[idx]; array[idx] = array[i]; array[i] = tmp; } string script = @" numSwaps = 0; foreach (i in [0...array.Length-2]) { foreach (j in [i+1...array.Length-1]) { if (array[i] > array[j]) { tmp = array[i]; array[i] = array[j]; array[j] = tmp; numSwaps = numSwaps + 1; } } } return numSwaps; "; _parser.Evaluate(script, context); object o; Type t; context.Get("array", out o, out t); array = (int[])o; Assert.AreEqual(1, array[0]); Assert.AreEqual(2, array[1]); Assert.AreEqual(3, array[2]); Assert.AreEqual(4, array[3]); Assert.AreEqual(5, array[4]); Assert.AreEqual(6, array[5]); Assert.AreEqual(7, array[6]); Assert.AreEqual(8, array[7]); Assert.AreEqual(9, array[8]); }