Example #1
0
 public override void Validate(MyValidator validator)
 {
     base.Validate(validator);
     if (ParentNetwork == null)
     {
         validator.AddError(this, "LSTM layer needs to be in a neural network group");
     }
 }
Example #2
0
        public override void Validate(MyValidator validator)
        {
            ScriptCheckMethod = null;
            ScriptShouldStopMethod = null;

            CSharpCodeProvider codeProvider = new CSharpCodeProvider();
            CompilerParameters parameters = new CompilerParameters()
            {
                GenerateInMemory = false,
                GenerateExecutable = false,

            };

            parameters.ReferencedAssemblies.Add("GoodAI.Platform.Core.dll");
            parameters.ReferencedAssemblies.Add("System.Core.dll"); //for LINQ support
            parameters.ReferencedAssemblies.Add("System.Runtime.dll"); //for LINQ support
            // TODO: load the xunit dll in Brain Simulator UI from the module directory.
            parameters.ReferencedAssemblies.Add("xunit.assert.dll");
            parameters.ReferencedAssemblies.Add(Assembly.GetExecutingAssembly().Location);

            //Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
            //IEnumerable<Assembly> openTKAssemblies = loadedAssemblies.Where(x => x.ManifestModule.Name == "xunit.assert.dll");
            //if (openTKAssemblies.Count() > 0)
            //    parameters.ReferencedAssemblies.Add(openTKAssemblies.First().Location);

            CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, Script);

            if (results.Errors.HasErrors)
            {
                string message = "";

                foreach (CompilerError error in results.Errors)
                {
                    message += "Line " + error.Line + ": " + error.ErrorText + "\n";
                }

                validator.AddError(this, "Errors in compiled script:\n" + message);
                return;
            }
            else if (results.CompiledAssembly == null)
            {
                validator.AddError(this, "Compiled assembly is null.");
                return;
            }

            try
            {
                Type enclosingType = results.CompiledAssembly.GetType("Runtime.Script");

                ScriptCheckMethod = enclosingType.GetMethod("Check");
                validator.AssertError(ScriptCheckMethod != null, this, "Check() method not found in compiled script");

                ScriptShouldStopMethod = enclosingType.GetMethod("ShouldStop");  // optional, don't check for null
            }
            catch (Exception e)
            {
                validator.AddError(this, "Script analysis failed: " + e.GetType().Name + ": " + e.Message);
            }
        }