示例#1
0
        /// <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);
        }
示例#2
0
        /// <summary>
        /// Initializes the log with xml header stuff.
        /// </summary>
        private void initLog()
        {
            TestState ts   = TestState.getOnly();
            string    date = DateTime.Now.Date.ToShortDateString();

            m_sw.WriteLine(@"<?xml version=""1.0"" encoding=""UTF-8""?>");
            m_sw.WriteLine(@"<?xml-stylesheet type=""text/xsl"" href=""gtdLog.xsl""?>");
            m_sw.WriteLine(@"<gtdLog>");
            m_sw.WriteLine(@" <set-up date=""{0}"">", date);
            m_sw.WriteLine(@"  <application path=""{0}"" exe=""{1}""/>", ts.getAppPath(), ts.getAppExe());
            m_sw.WriteLine(@"  <script path=""{0}"" name=""{1}""/>", ts.getScriptPath(), ts.Script);
            m_sw.WriteLine(@"  <model path=""{0}"" name=""{1}""/>", ts.getModelPath(), ts.getModelName());
            m_sw.WriteLine(@" </set-up>");
            m_init = true;
        }
示例#3
0
        private Logger()
        {          // open a file
            TestState ts   = TestState.getOnly();
            string    path = ts.getScriptPath() + @"\";
            string    script;

            if (ts.Script == null)
            {
                script = "Logger2" + ".xlg";
            }
            else
            {
                script = ts.Script.Split(".".ToCharArray(), 2)[0] + ".xlg";
            }
            m_sw       = File.CreateText(path + script);
            m_init     = false;
            s_isClosed = false;
        }