public void GenerateForLoop2() { string code = @" module bar: int Counter(): int c = 0 int i = 0 for i in 1 to 10 step 2: c = c + 1 return c "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); foreach (CompilerError e in results.Errors) { Console.WriteLine(e.ErrorText); } Assert.AreEqual(0, results.Errors.Count); var counterMethod = results.CompiledAssembly.GetType("bar").GetMethod("Counter"); Assert.IsNotNull(counterMethod); int i = (int)counterMethod.Invoke(null, null); Assert.AreEqual(5, i); }
public void GenerateCharLiteral() { string code = @" module bar: char Get(): char c = 'c' return c "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); foreach (CompilerError e in results.Errors) { Console.WriteLine(e.ErrorText); } Assert.AreEqual(0, results.Errors.Count); var counterMethod = results.CompiledAssembly.GetType("bar").GetMethod("Get"); object o = counterMethod.Invoke(null, null); Assert.IsTrue(o is Char); Assert.AreEqual('c', (Char)o); }
public void GenerateMultipleSource2() { string code1 = @" module bar: void foo(): "; string code2 = @" module bar: void rawr(): "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code1, code2); foreach (CompilerError e in results.Errors) { Console.WriteLine(e.ErrorText); } Assert.AreEqual(0, results.Errors.Count); Assert.IsTrue(results.CompiledAssembly.GetType("bar").GetMethod("foo").IsPublic); Assert.IsTrue(results.CompiledAssembly.GetType("bar").GetMethod("rawr").IsPublic); }
public void GenerateProperty1() { string code = @" module bar: int testproperty: get: return 1234 "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.ReferencedAssemblies.Add("System.dll"); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); var assembly = results.CompiledAssembly; Assert.AreEqual(0, results.Errors.Count); Type t = assembly.GetType("bar"); Assert.IsNotNull(t); var prop = t.GetProperty("testproperty"); Assert.IsNotNull(prop); var method = prop.GetGetMethod(); Assert.IsNotNull(method); Assert.IsTrue(method.IsPublic); Assert.IsTrue(method.IsStatic); int i = (int)method.Invoke(null, null); Assert.AreEqual(1234, i); }
public void ClassVariableTest1() { string code = @" class foo: int bar "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); Assert.AreEqual(0, results.Errors.Count); Type t = results.CompiledAssembly.GetType("foo"); Assert.IsNotNull(t); var variable = t.GetField("bar", BindingFlags.NonPublic | BindingFlags.Instance); Assert.IsNotNull(variable); Assert.IsTrue(variable.IsPrivate); var foo = Activator.CreateInstance(t); Assert.IsTrue(variable.GetValue(foo) is int); }
public void ExceptionHandler1() { string code = @" import System module foo: int bar(): int i = 1 int zero = 0 try: i /= zero catch Exception e: Console.WriteLine(ex) finally: i = 1234 return i "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); Assert.AreEqual(0, results.Errors.Count); Type foo = results.CompiledAssembly.GetType("foo"); var method = foo.GetMethod("bar"); int o = (int)method.Invoke(null, null); Assert.AreEqual(1234, o); }
public void GenerateDelegate5() { string code = @" delegate int [] d(int [] d) "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); Assert.AreEqual(0, results.Errors.Count); }
public void GenerateThrow() { string code = @" import System module foo: int bar(): throw new Exception() "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); Assert.AreEqual(0, results.Errors.Count); }
public void SimpleInstantiation() { string code = @" import System class foo: void bar(): var f = new foo() "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); Assert.AreEqual(0, results.Errors.Count); }
public void GenerateProperty2() { string code = @" class bar: int i int testproperty: get: return i set: i = value "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.ReferencedAssemblies.Add("System.dll"); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); var assembly = results.CompiledAssembly; Assert.AreEqual(0, results.Errors.Count); Type t = assembly.GetType("bar"); Assert.IsNotNull(t); object inst = Activator.CreateInstance(t); var prop = t.GetProperty("testproperty"); Assert.IsNotNull(prop); var setmethod = prop.GetSetMethod(); Assert.IsNotNull(setmethod); Assert.IsTrue(setmethod.IsPublic); Assert.IsFalse(setmethod.IsStatic); setmethod.Invoke(inst, new object[]{1234}); var getmethod = prop.GetGetMethod(); Assert.IsNotNull(getmethod); int i = (int)getmethod.Invoke(inst, null); Assert.AreEqual(1234, i); }
public void GenerateClassConstructor() { string code = @" class bar: new(int i): "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); foreach (CompilerError e in results.Errors) { Console.WriteLine(e.ErrorText); } Assert.AreEqual(0, results.Errors.Count); }
public void GenerateClassMethodDefault2() { string code = @" class bar: void foo(ref int i): "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); foreach (CompilerError e in results.Errors) { Console.WriteLine(e.ErrorText); } Assert.AreEqual(0, results.Errors.Count); Assert.IsTrue(results.CompiledAssembly.GetType("bar").GetMethod("foo").IsPublic); }
public void GeneratePrivateConstructor() { string code = @" class bar: private new(int i): module foo: void test(): bar b = new bar(99) "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); foreach (CompilerError e in results.Errors) { Console.WriteLine(e.ErrorText); } Assert.AreEqual(1, results.Errors.Count); }
public void GenerateProperty4() { string code = @" import System.Collections.Generic module bar: List{int} testproperty: get: return null "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); var assembly = results.CompiledAssembly; Assert.AreEqual(0, results.Errors.Count); }
public void GenerateClassInheritance2() { string code = @" import System abstract class Animal: protected String name new(String name): this.name = name abstract String Speak(): class Monkey(Animal): new(String name): base(name): override String Speak(): return ""Ook ook!"" class Human(Monkey): new(String name): base(name): override String Speak(): return ""Hello world! My name is "" + this.name + ""."" "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); foreach (CompilerError e in results.Errors) { Console.WriteLine(e.ErrorText); } Assert.AreEqual(0, results.Errors.Count); Type monkeyType = results.CompiledAssembly.GetType("Monkey"); Assert.IsNotNull(monkeyType); var monkeyMethod = monkeyType.GetMethod("Speak"); object monkey = Activator.CreateInstance(monkeyType, "Jibbers"); string monkeySpeak = (string)monkeyMethod.Invoke(monkey, null); Assert.AreEqual("Ook ook!", monkeySpeak); Type humanType = results.CompiledAssembly.GetType("Human"); Assert.IsNotNull(humanType); var humanMethod = humanType.GetMethod("Speak"); object human = Activator.CreateInstance(humanType, "Sir Harold Von Rabberdasher"); string humanSpeak = (string)humanMethod.Invoke(human, null); Assert.AreEqual("Hello world! My name is Sir Harold Von Rabberdasher.", humanSpeak); }
public void GenerateInstantiation() { string code = @" class bar: int number new(int number): this.number = number int GetNumber(): return number "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); foreach (CompilerError e in results.Errors) { Console.WriteLine(e.ErrorText); } Assert.AreEqual(0, results.Errors.Count); var assembly = results.CompiledAssembly; Type t = assembly.GetType("bar"); Assert.IsNotNull(t); object o = Activator.CreateInstance(t, 1234); Assert.IsNotNull(o); var method = t.GetMethod("GetNumber"); Assert.IsNotNull(method); int n = (int)method.Invoke(o, null); Assert.AreEqual(1234, n); }
public void GenerateClassMethodPrivate() { string code = @" class bar: private void foo(): "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); foreach (CompilerError e in results.Errors) { Console.WriteLine(e.ErrorText); } Assert.AreEqual(0, results.Errors.Count); Assert.IsTrue(results.CompiledAssembly.GetType("bar").GetMethod("foo", System.Reflection.BindingFlags.NonPublic | BindingFlags.Instance).IsPrivate); }
public void GenerateProperty3() { string code = @" module bar: int [] testproperty: get: return new int[2] "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); var assembly = results.CompiledAssembly; Assert.AreEqual(0, results.Errors.Count); }
public void GenerateEvent() { string code = @" import System.Collections.Generic delegate int del(int d) class foo: public event del delegateEvent void Main(): delegateEvent += fn int fn(int d): return 1 "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); foreach (CompilerError error in results.Errors) Console.WriteLine(error.ErrorText); Assert.AreEqual(0, results.Errors.Count); }
public void GenerateDelegate6() { string code = @" import System.Collections.Generic delegate List{string} d(List{string} d) "; var provider = new PieCodeProvider(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; var results = provider.CompileAssemblyFromSource(parameters, code); foreach (CompilerError error in results.Errors) Console.WriteLine(error.ErrorText); Assert.AreEqual(0, results.Errors.Count); }