一个记录程序运行时间表的控件
一个记录程序运行时间表的控件 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;
}
}
}