一个记录程序运行时间表的控件

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

namespace MyTools
{
///

1<summary>   
2/// Summary description for TimeTest.   
3/// </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;
}
}
}

Published At
Categories with Web编程
Tagged with
comments powered by Disqus