-
Notifications
You must be signed in to change notification settings - Fork 0
/
TestRun.cs
137 lines (128 loc) · 3.6 KB
/
TestRun.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
using System.IO;
using System.Collections.Generic;
using Platform.IO;
using Platform.Diagnostics;
using Comparisons.SQLiteVSDoublets.Model;
namespace Comparisons.SQLiteVSDoublets
{
/// <summary>
/// <para>
/// Represents the test run.
/// </para>
/// <para></para>
/// </summary>
public abstract class TestRun
{
/// <summary>
/// <para>
/// Gets the db filename value.
/// </para>
/// <para></para>
/// </summary>
public string DbFilename { get; }
/// <summary>
/// <para>
/// Gets the results value.
/// </para>
/// <para></para>
/// </summary>
public TestRunResults Results { get; }
/// <summary>
/// <para>
/// Gets the read blog posts value.
/// </para>
/// <para></para>
/// </summary>
public List<BlogPost> ReadBlogPosts { get; }
/// <summary>
/// <para>
/// Initializes a new <see cref="TestRun"/> instance.
/// </para>
/// <para></para>
/// </summary>
/// <param name="dbFilename">
/// <para>A db filename.</para>
/// <para></para>
/// </param>
protected TestRun(string dbFilename)
{
DbFilename = dbFilename;
Results = new TestRunResults();
ReadBlogPosts = new List<BlogPost>();
}
/// <summary>
/// <para>
/// Runs this instance.
/// </para>
/// <para></para>
/// </summary>
public void Run()
{
if (File.Exists(DbFilename))
{
DeleteDatabase();
}
Results.PrepareTime = Performance.Measure(Prepare);
Results.DbSizeAfterPrepare = GetDatabaseSizeInBytes();
Results.ListCreationTime = Performance.Measure(CreateList);
Results.DbSizeAfterCreation = GetDatabaseSizeInBytes();
Results.ListReadingTime = Performance.Measure(ReadList);
Results.DbSizeAfterReading = GetDatabaseSizeInBytes();
Results.ListDeletionTime = Performance.Measure(DeleteList);
Results.DbSizeAfterDeletion = GetDatabaseSizeInBytes();
DeleteDatabase();
}
/// <summary>
/// <para>
/// Gets the database size in bytes.
/// </para>
/// <para></para>
/// </summary>
/// <returns>
/// <para>The long</para>
/// <para></para>
/// </returns>
protected virtual long GetDatabaseSizeInBytes()
{
return FileHelpers.GetSize(DbFilename);
}
/// <summary>
/// <para>
/// Deletes the database.
/// </para>
/// <para></para>
/// </summary>
protected virtual void DeleteDatabase()
{
File.Delete(DbFilename);
}
/// <summary>
/// <para>
/// Prepares this instance.
/// </para>
/// <para></para>
/// </summary>
public abstract void Prepare();
/// <summary>
/// <para>
/// Creates the list.
/// </para>
/// <para></para>
/// </summary>
public abstract void CreateList();
/// <summary>
/// <para>
/// Reads the list.
/// </para>
/// <para></para>
/// </summary>
public abstract void ReadList();
/// <summary>
/// <para>
/// Deletes the list.
/// </para>
/// <para></para>
/// </summary>
public abstract void DeleteList();
}
}