public void BlacklistTypes2() { var opts = new LensCompilerOptions { SafeMode = SafeMode.Blacklist, SafeModeExplicitTypes = new List <string> { "System.GC" } }; var src = @" GC::Collect () "; try { Compile(src, opts); Assert.Fail(); } catch (LensCompilerException ex) { Assert.AreEqual( string.Format(CompilerMessages.SafeModeIllegalType, typeof(GC).FullName), ex.Message ); } }
public void BlacklistNamespaces2() { var opts = new LensCompilerOptions { SafeMode = SafeMode.Blacklist, SafeModeExplicitNamespaces = new List <string> { "System.Text" } }; var src = @" use System.Text.RegularExpressions new List<Regex> () "; try { Compile(src, opts); Assert.Fail(); } catch (LensCompilerException ex) { Assert.AreEqual( string.Format(CompilerMessages.SafeModeIllegalType, typeof(List <Regex>).FullName), ex.Message ); } }
public void BlacklistTypes1() { var opts = new LensCompilerOptions { SafeMode = SafeMode.Blacklist, SafeModeExplicitTypes = new List <string> { "System.Collections.Stack" } }; var src = @" use System.Collections var s = new Stack () s.Push 1 "; try { Compile(src, opts); Assert.Fail(); } catch (LensCompilerException ex) { Assert.AreEqual( string.Format(CompilerMessages.SafeModeIllegalType, typeof(System.Collections.Stack).FullName), ex.Message ); } }
public Context(LensCompilerOptions options = null) { Options = options ?? new LensCompilerOptions(); _DefinedTypes = new Dictionary<string, TypeEntity>(); _DefinedProperties = new Dictionary<string, GlobalPropertyInfo>(); Unique = new UniqueNameGenerator(); if (Options.UseDefaultNamespaces) { Namespaces.Add("System", true); Namespaces.Add("System.Linq", true); Namespaces.Add("System.Text.RegularExpressions", true); } _AssemblyCache = new ReferencedAssemblyCache(Options.UseDefaultAssemblies); _ExtensionResolver = new ExtensionMethodResolver(Namespaces, _AssemblyCache); _TypeResolver = new TypeResolver(Namespaces, _AssemblyCache) { ExternalLookup = name => { TypeEntity ent; _DefinedTypes.TryGetValue(name, out ent); return ent == null ? null : ent.TypeBuilder; } }; AssemblyName an; lock(typeof(Context)) an = new AssemblyName(Unique.AssemblyName()); if (Options.AllowSave) { if(string.IsNullOrEmpty(Options.FileName)) Options.FileName = an.Name + (Options.SaveAsExe ? ".exe" : ".dll"); MainAssembly = AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.RunAndSave); MainModule = MainAssembly.DefineDynamicModule(an.Name, Options.FileName); } else { MainAssembly = AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.Run); MainModule = MainAssembly.DefineDynamicModule(an.Name); } ContextId = GlobalPropertyHelper.RegisterContext(); MainType = CreateType(EntityNames.MainTypeName, prepare: false); MainType.Kind = TypeEntityKind.Main; MainType.Interfaces = new[] {typeof (IScript)}; MainMethod = MainType.CreateMethod(EntityNames.RunMethodName, typeof(object), Type.EmptyTypes, false, true, false); if(Options.LoadStandardLibrary) initStdlib(); InitSafeMode(); }
private static LensCompiler createCompiler(LensCompilerOptions opts) { var compiler = new LensCompiler(opts ?? new LensCompilerOptions { AllowSave = true }); compiler.RegisterAssembly(Assembly.Load("System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")); return(compiler); }
public void RandTest2() { var src = "rand 1 1000"; var opts = new LensCompilerOptions { AllowSave = true }; var fx = new LensCompiler(opts).Compile(src); for (var idx = 0; idx < 1000; idx++) { var res = (int)fx(); Assert.IsTrue(res >= 1 && res <= 1000); } }
public void RandTest1() { var src = "rand ()"; var opts = new LensCompilerOptions(); var fx = new LensCompiler(opts).Compile(src); for (var idx = 0; idx < 1000; idx++) { var res = (double)fx(); Assert.IsTrue(res >= 0 && res <= 1); } }
protected static LensCompiler CreateCompiler(LensCompilerOptions opts) { var compiler = new LensCompiler(opts ?? new LensCompilerOptions { #if NET_CLASSIC AllowSave = true #endif }); compiler.RegisterAssembly(Assembly.Load("System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")); return(compiler); }
public void RandTest2() { var src = "rand 1 1000"; var opts = new LensCompilerOptions(); var fx = new LensCompiler(opts).Compile(src); for (var idx = 0; idx < 1000; idx++) { var res = (int)fx(); Assert.IsTrue(res >= 1 && res <= 1000); } }
public void RandTest3() { var src = "rand (new [1; 2; 3; 4; 5])"; var opts = new LensCompilerOptions(); var fx = new LensCompiler(opts).Compile(src); for (var idx = 0; idx < 100; idx++) { var res = (int)fx(); Assert.IsTrue(res >= 1 && res <= 5); } }
public void RandTest1() { var src = "rand ()"; var opts = new LensCompilerOptions { AllowSave = true }; var fx = new LensCompiler(opts).Compile(src); for (var idx = 0; idx < 1000; idx ++) { var res = (double) fx(); Assert.IsTrue(res >= 0 && res <= 1); } }
protected static void Test(string src, object value, bool testConstants = false) { var opts = new LensCompilerOptions { UnrollConstants = true, #if NET_CLASSIC AllowSave = true #endif }; Assert.AreEqual(value, Compile(src, opts)); if (testConstants) { Assert.AreEqual(value, Compile(src)); } }
private void TestSubsystem(Type type, SafeModeSubsystem system, string code) { var opts = new LensCompilerOptions { SafeMode = SafeMode.Blacklist, SafeModeExplicitSubsystems = system }; try { Compile(code, opts); Assert.Fail(); } catch (LensCompilerException ex) { Assert.AreEqual( string.Format(CompilerMessages.SafeModeIllegalType, type.FullName), ex.Message ); } }
public void BlacklistNamespaces1() { var opts = new LensCompilerOptions { SafeMode = SafeMode.Blacklist, SafeModeExplicitNamespaces = new List<string> { "System.Text" } }; var src = @"new System.Text.RegularExpressions.Regex ""test"""; try { Compile(src, opts); Assert.Fail(); } catch (LensCompilerException ex) { Assert.AreEqual( string.Format(CompilerMessages.SafeModeIllegalType, typeof(Regex).FullName), ex.Message ); } }
public void BlacklistTypes1() { var opts = new LensCompilerOptions { SafeMode = SafeMode.Blacklist, SafeModeExplicitTypes = new List<string> { "System.Collections.Stack" } }; var src = @" use System.Collections var s = new Stack () s.Push 1 "; try { Compile(src, opts); Assert.Fail(); } catch (LensCompilerException ex) { Assert.AreEqual( string.Format(CompilerMessages.SafeModeIllegalType, typeof(System.Collections.Stack).FullName), ex.Message ); } }
protected static object Compile(string src, LensCompilerOptions opts = null) { return(CreateCompiler(opts).Run(src)); }
protected static object Compile(string src, LensCompilerOptions opts = null) { opts = opts ?? new LensCompilerOptions { AllowSave = true }; return new LensCompiler(opts).Run(src); }
public void BlacklistTypes2() { var opts = new LensCompilerOptions { SafeMode = SafeMode.Blacklist, SafeModeExplicitTypes = new List<string> { "System.GC" } }; var src = @" GC::Collect () "; try { Compile(src, opts); Assert.Fail(); } catch (LensCompilerException ex) { Assert.AreEqual( string.Format(CompilerMessages.SafeModeIllegalType, typeof(GC).FullName), ex.Message ); } }
protected static void Test(IEnumerable <NodeBase> nodes, object value, LensCompilerOptions opts) { Assert.AreEqual(value, Compile(nodes, opts)); }
protected static object Compile(IEnumerable<NodeBase> nodes, LensCompilerOptions opts = null) { opts = opts ?? new LensCompilerOptions { AllowSave = true }; return new LensCompiler(opts).Run(nodes); }
protected static void Test(string src, object value, LensCompilerOptions opts) { Assert.AreEqual(value, Compile(src, opts)); }
protected static void Test(IEnumerable<NodeBase> nodes, object value, LensCompilerOptions opts) { Assert.AreEqual(value, Compile(nodes, opts)); }
private void testSubsystem(Type type, SafeModeSubsystem system, string code) { var opts = new LensCompilerOptions { SafeMode = SafeMode.Blacklist, SafeModeExplicitSubsystems = system }; try { Compile(code, opts); Assert.Fail(); } catch (LensCompilerException ex) { Assert.AreEqual( string.Format(CompilerMessages.SafeModeIllegalType, type.FullName), ex.Message ); } }
private static LensCompiler createCompiler(LensCompilerOptions opts) { var compiler = new LensCompiler(opts ?? new LensCompilerOptions { AllowSave = true }); compiler.RegisterAssembly(Assembly.Load("System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")); return compiler; }
public Context(LensCompilerOptions options = null) { Options = options ?? new LensCompilerOptions(); _definedTypes = new Dictionary <string, TypeEntity>(); _definedProperties = new Dictionary <string, GlobalPropertyInfo>(); Unique = new UniqueNameGenerator(); if (Options.UseDefaultNamespaces) { Namespaces.Add("System", true); Namespaces.Add("System.Linq", true); Namespaces.Add("System.Text.RegularExpressions", true); } AssemblyCache = new ReferencedAssemblyCache(Options.UseDefaultAssemblies); _extensionResolver = new ExtensionMethodResolver(Namespaces, AssemblyCache); _typeResolver = new TypeResolver(Namespaces, AssemblyCache) { ExternalLookup = name => { _definedTypes.TryGetValue(name, out var ent); return(ent?.TypeBuilder); } }; AssemblyName an; lock (typeof(Context)) an = new AssemblyName(Unique.AssemblyName()); #if NET_CLASSIC if (Options.AllowSave) { if (string.IsNullOrEmpty(Options.FileName)) { Options.FileName = an.Name + (Options.SaveAsExe ? ".exe" : ".dll"); } MainAssembly = AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.RunAndSave); MainModule = MainAssembly.DefineDynamicModule(an.Name, Options.FileName); } else { MainAssembly = AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.Run); MainModule = MainAssembly.DefineDynamicModule(an.Name); } #else MainAssembly = AssemblyBuilder.DefineDynamicAssembly(an, AssemblyBuilderAccess.Run); MainModule = MainAssembly.DefineDynamicModule(an.Name); #endif ContextId = GlobalPropertyHelper.RegisterContext(); MainType = CreateType(EntityNames.MainTypeName, prepare: false); MainType.Kind = TypeEntityKind.Main; MainType.Interfaces = new[] { typeof(IScript) }; MainMethod = MainType.CreateMethod(EntityNames.RunMethodName, typeof(object), Type.EmptyTypes, false, true, false); if (Options.LoadStandardLibrary) { InitStdlib(); } InitSafeMode(); }
protected static object Compile(IEnumerable<NodeBase> nodes, LensCompilerOptions opts = null) { return createCompiler(opts).Run(nodes); }
protected static object Compile(string src, LensCompilerOptions opts = null) { return createCompiler(opts).Run(src); }
protected static object Compile(IEnumerable <NodeBase> nodes, LensCompilerOptions opts = null) { return(CreateCompiler(opts).Run(nodes)); }