public static bool initialize(string insFileName) { // read the instruction file into prototype classes XmlElement docEl = XmlFiler.getDocumentElement(insFileName, "instructions", false); if (docEl == null) { Logger.getOnly().fail("Instruction prototype file " + insFileName + " not found or empty"); return false; } XmlNodeList xnActive = XmlFiler.selectNodes(docEl, "active"); if (xnActive == null) { Logger.getOnly().fail("Instruction prototype file " + insFileName + " contains no active instructions"); return false; } m_actPrototypes = listChildren(xnActive[0]); if (m_actPrototypes == null) { Logger.getOnly().fail("Instruction prototype file " + insFileName + " contains not one active instruction!"); return false; } XmlNodeList xnPassive = XmlFiler.selectNodes(docEl, "passive"); if (xnPassive != null) m_pasPrototypes = listChildren(xnPassive[0]); XmlNodeList xnSuspended = XmlFiler.selectNodes(docEl, "suspended"); if (xnSuspended != null) m_susPrototypes = listChildren(xnSuspended[0]); return true; }
/// <summary> /// Gets the name of a test script and runs it. /// There must be a corresponding XML script file in the /// location specified in the GtdConfig.xml file. /// </summary> /// <param name="script">The name of the test script (.xml not needed).</param> public void fromFile(string script) { if (!(script.ToLower()).EndsWith(@".xml")) { script += ".xml"; } TestState ts = null; if (varsDefined) // true only if AddVariable() was called. { ts = TestState.getOnly(); // Re-open the log using the script name - lose what's there. Logger.getOnly().close(Logger.Disposition.Hung); // The next call to Logger.getOnly() will create one with using the script name. } else { ts = TestState.getOnly(m_appSymbol); // Allocating ts here insures deallocation } ts.Script = script; // must come before ts.PublishVars(); ts.PublishVars(); // get the script path from the configuration file string path = ts.getScriptPath() + @"\" + script; XmlElement scriptRoot = XmlFiler.getDocumentElement(path, "accil", false); Assert.IsNotNull(scriptRoot, "Missing document element 'accil'."); Instructionator.initialize("AxilInstructions.xml"); OnDesktop dt = new OnDesktop(); Assert.IsNotNull(dt, "OnDesktop not created for script " + path); dt.Element = scriptRoot; // not quite code-behind, but OK dt.Number = ts.IncInstructionCount; //dt = new XmlInstructionBuilder().Parse(path); // now execute any variables if they've been added before executing the desktop foreach (Var v in m_vars) { v.Execute(); } System.GC.Collect(); // forces collection on NUnit process only Beep beeep = new Beep(); beeep.Execute(); // play a beep tone so we know when the test starts dt.Execute(); varsDefined = false; // the next test may not have any Logger.getOnly().close(Logger.Disposition.Pass); Thread.Sleep(1000); }