-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTestStateKeeper.cpp
More file actions
75 lines (68 loc) · 1.78 KB
/
TestStateKeeper.cpp
File metadata and controls
75 lines (68 loc) · 1.78 KB
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
#include "stdafx.h"
#include "TestStateKeeper.h"
#include "TestObserver.h"
TestStateKeeper::TestStateKeeper()
: m_stagesTotal(0)
, m_currentStage(0)
{ }
void TestStateKeeper::TestStarted(TestStage stages, bool burnIt)
{
m_currentStage = 0;
m_allResults.clear();
if (burnIt)
{
stages *= 4;
}
m_stagesTotal = stages;
}
TestStage TestStateKeeper::CurrentStage() const
{
return m_currentStage;
}
TestStage TestStateKeeper::GetStagesCount() const
{
return m_stagesTotal;
}
void TestStateKeeper::SubmitSingleTestResult(const SingleTestResult& result)
{
m_allResults.push_back(result);
++m_currentStage;
}
StagesAverageResults TestStateKeeper::GetAverageResults() const
{
StagesAverageResults averages;
for (SingleTestResult stageResults : m_allResults)
{
StageAverageResult average = 0;
for (const auto& stageResult : stageResults)
{
if (stageResult.error.empty())
{
average += stageResult.duration;
}
else
{
return {};
}
}
averages.push_back(average / stageResults.size());
}
return averages;
}
TimesElapsed TestStateKeeper::GetTimesElapsed() const
{
TimesElapsed timesElapsed;
for (SingleTestResult testResult : m_allResults) // The entities of test results and time elapsed are similar for now.
{
TimeElapsed testTimeElapsed = 0;
for (const auto& threadResult : testResult)
{
if (testTimeElapsed < static_cast<TimeElapsed>(threadResult.duration))
{
testTimeElapsed = static_cast<TimeElapsed>(threadResult.duration);
}
}
timesElapsed.push_back(testTimeElapsed);
}
return timesElapsed;
}