zoukankan      html  css  js  c++  java
  • 一个记录程序运行时间表的控件

    using System;
    using System.Collections;
    using System.Data;

    namespace MyTools
    {
        /// <summary>
        /// Summary description for TimeTest.
        /// </summary>
        public class TimeTest
        {    
            private DataTable manager = new DataTable("manager");
            private DataTable timeList = new DataTable("timeList");
            
            public TimeTest()
            {
                #region initialize the ManagerTable to save the test cases
                DataColumn  tempColumn = new DataColumn("name",typeof(System.String));
                manager.Columns.Add(tempColumn);
                tempColumn = new DataColumn("description",typeof(System.String));
                manager.Columns.Add(tempColumn);
                tempColumn = new DataColumn("totalTime",typeof(System.TimeSpan));
                manager.Columns.Add(tempColumn);
                tempColumn = new DataColumn("startTime",typeof(System.DateTime));
                manager.Columns.Add(tempColumn);
                tempColumn = new DataColumn("testCount",typeof(System.Int32));
                manager.Columns.Add(tempColumn);
                manager.PrimaryKey =  new DataColumn[]{manager.Columns["name"]};
                #endregion

                #region initialize the TimeListTable to save the list of time span
                tempColumn = new DataColumn("name",typeof(System.String));
                timeList.Columns.Add(tempColumn);
                tempColumn = new DataColumn("time",typeof(System.TimeSpan));
                timeList.Columns.Add(tempColumn);
                tempColumn = new DataColumn("description",typeof(System.String));
                timeList.Columns.Add(tempColumn);
                #endregion

                #region initialize a test case
                this.AddProcess("__mainTest__","The default test is created by system!");
                #endregion
            }

            public TimeTest(string testName,string description)
            {
                #region initialize the ManagerTable to save the test cases
                DataColumn  tempColumn = new DataColumn("name",typeof(System.String));
                manager.Columns.Add(tempColumn);
                tempColumn = new DataColumn("description",typeof(System.String));
                manager.Columns.Add(tempColumn);
                tempColumn = new DataColumn("totalTime",typeof(System.TimeSpan));
                manager.Columns.Add(tempColumn);
                tempColumn = new DataColumn("startTime",typeof(System.DateTime));
                manager.Columns.Add(tempColumn);
                tempColumn = new DataColumn("testCount",typeof(System.Int32));
                manager.Columns.Add(tempColumn);
                manager.PrimaryKey =  new DataColumn[]{manager.Columns["name"]};
                #endregion

                #region initialize the TimeListTable to save the list of time span
                tempColumn = new DataColumn("name",typeof(System.String));
                timeList.Columns.Add(tempColumn);
                tempColumn = new DataColumn("time",typeof(System.TimeSpan));
                timeList.Columns.Add(tempColumn);
                tempColumn = new DataColumn("description",typeof(System.String));
                timeList.Columns.Add(tempColumn);
                #endregion

                #region initialize a test case
                this.AddProcess(testName,description);
                #endregion
            }


            private void AddProcess(string testName,string description)
            {
                DataRow tempRow = this.manager.NewRow();
                tempRow["name"] = testName;
                tempRow["description"] = description;
                tempRow["startTime"] = DateTime.Now;
                tempRow["totalTime"] = TimeSpan.Zero;
                tempRow["testCount"] = 0;
                this.manager.Rows.Add(tempRow);
            }


            #region Begin a test
            public void BeginTest(string testName,string description)
            {
                DataRow tempRow = this.manager.Rows.Find(testName);
                if(null != tempRow)
                {
                    tempRow["startTime"] = DateTime.Now;
                }
                else
                {
                    this.AddProcess(testName,description);
                }
            }

            public void BeginTest(string testName)
            {
                this.BeginTest(testName,"");
            }

            public void Begin()
            {
                this.BeginTest(this.manager.Rows[0]["name"].ToString(),"");
            }
            #endregion

            #region End a test
            public void EndTest(string testName,string description)
            {
                DataRow tempRow = this.manager.Rows.Find(testName);
                if(null == tempRow)
                {
                    return;
                }
                DateTime tempTime = (DateTime)tempRow["startTime"];
    //            tempRow = this.timeList.NewRow();
    //            tempRow["time"] = DateTime.Now - tempTime;
    //            tempRow["name"] = testName;
    //            tempRow["description"] = description;
    //            this.timeList.Rows.Add(tempRow);
                this.manager.Rows.Find(testName)["startTime"] = DateTime.Now;
                this.manager.Rows.Find(testName)["totalTime"] = (TimeSpan)(this.manager.Rows.Find(testName)["totalTime"]) + (DateTime.Now - tempTime);
                this.manager.Rows.Find(testName)["testCount"] = (int)this.manager.Rows.Find(testName)["testCount"] + 1;
            }

            public void EndTest(string testName)
            {
                this.EndTest(testName,"");
            }

            public void End()
            {
                this.EndTest(this.manager.Rows[0]["name"].ToString(),"");
            }

            public void End(string description)
            {
                this.EndTest(this.manager.Rows[0]["name"].ToString(),description);
            }
            #endregion

            public DataTable GetTestListByName(string testName)
            {
                DataTable RtnTable = this.timeList.Clone();
                RtnTable.Columns["time"].DataType = typeof(System.Double);
                DataRow row;
                foreach(DataRow tempRow in this.timeList.Select("name = '" + testName +"'"))
                {
                    row = RtnTable.NewRow();
                    if(tempRow["name"].ToString().Trim().Equals("__mainTest__"))
                    {
                        row["name"] = "[System Default]";
                    }
                    else
                    {
                        row["name"] = tempRow["name"];
                    }
                    row["description"] = tempRow["description"];
                    row["time"] = ((TimeSpan)tempRow["time"]).TotalMilliseconds;
                    RtnTable.Rows.Add(row);
                }
                return RtnTable;
            }

            public DataTable GetTestListByName()
            {
                return GetTestListByName(this.manager.Rows[0]["name"].ToString());
            }

            public double GetTestTimeByName(string testName)
            {
                return ((TimeSpan)this.manager.Rows.Find(testName)["totalTime"]).TotalMilliseconds;
            }

            public double GetTestTimeByName()
            {
                return GetTestTimeByName(this.manager.Rows[0]["name"].ToString());
            }

            public DataTable GetAllTestTime()
            {
                DataTable RtnTable = this.manager.Clone();
                RtnTable.Columns["totalTime"].DataType = typeof(System.Double);
                RtnTable.Columns.Remove("startTime");
                DataRow row;
                foreach(DataRow tempRow in this.manager.Rows)
                {
                    row = RtnTable.NewRow();
                    if(tempRow["name"].ToString().Trim().Equals("__mainTest__"))
                    {
                        row["name"] = "[System Default]";
                    }
                    else
                    {
                        row["name"] = tempRow["name"];
                    }
                    row["description"] = tempRow["description"];
                    row["totalTime"] = ((TimeSpan)tempRow["totalTime"]).TotalMilliseconds;
                    row["testCount"] = tempRow["testCount"];
                    RtnTable.Rows.Add(row);
                }
                return RtnTable;
            }
            

            public DataTable GetAllTestList()
            {
                DataTable RtnTable = this.timeList.Clone();
                RtnTable.Columns["time"].DataType = typeof(System.Double);
                DataRow row;
                foreach(DataRow tempRow in this.timeList.Rows)
                {
                    row = RtnTable.NewRow();
                    if(tempRow["name"].ToString().Trim().Equals("__mainTest__"))
                    {
                        row["name"] = "[System Default]";
                    }
                    else
                    {
                        row["name"] = tempRow["name"];
                    }
                    row["description"] = tempRow["description"];
                    row["time"] = ((TimeSpan)tempRow["time"]).TotalMilliseconds;
                    RtnTable.Rows.Add(row);
                }
                return RtnTable;
            }
        }
    }
  • 相关阅读:
    Android ListView带CheckBox实现单选
    android 登录和设置IP/端口功能
    html5 10大html5前端框架
    Html5 8个强大的基于Bootstrap的CSS框架
    Android 探究 LayoutInflater setFactory
    Android onLoadFinished与onLoaderReset
    Android android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 1
    Android 中AIDL的使用与理解
    Android Studio查看android源码
    ArrayList和LinkedList的用法区别:
  • 原文地址:https://www.cnblogs.com/zhuor/p/282819.html
Copyright © 2011-2022 走看看