1/*-------------------------------------------------------------------------
2 * drawElements Quality Program Test Executor
3 * ------------------------------------------
4 *
5 * Copyright 2014 The Android Open Source Project
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 *      http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 *//*!
20 * \file
21 * \brief Test batch result.
22 *//*--------------------------------------------------------------------*/
23
24#include "xeBatchResult.hpp"
25#include "deMemory.h"
26
27using std::vector;
28using std::string;
29using std::map;
30
31namespace xe
32{
33
34// InfoLog
35
36InfoLog::InfoLog (void)
37{
38}
39
40void InfoLog::append (const deUint8* bytes, int numBytes)
41{
42	DE_ASSERT(numBytes > 0);
43	int oldSize = (int)m_data.size();
44	m_data.resize(oldSize+numBytes);
45	deMemcpy(&m_data[oldSize], bytes, numBytes);
46}
47
48// TestCaseResultData
49
50TestCaseResultData::TestCaseResultData (const char* casePath)
51	: m_casePath	(casePath)
52	, m_statusCode	(TESTSTATUSCODE_LAST)
53{
54}
55
56TestCaseResultData::~TestCaseResultData (void)
57{
58}
59
60void TestCaseResultData::setTestResult (TestStatusCode statusCode, const char* statusDetails)
61{
62	m_statusCode	= statusCode;
63	m_statusDetails	= statusDetails;
64}
65
66void TestCaseResultData::clear (void)
67{
68	m_statusCode = TESTSTATUSCODE_LAST;
69	m_statusDetails.clear();
70	m_casePath.clear();
71	m_data.clear();
72}
73
74// BatchResult
75
76BatchResult::BatchResult (void)
77{
78}
79
80BatchResult::~BatchResult (void)
81{
82}
83
84bool BatchResult::hasTestCaseResult (const char* casePath) const
85{
86	return m_resultMap.find(casePath) != m_resultMap.end();
87}
88
89ConstTestCaseResultPtr BatchResult::getTestCaseResult (const char* casePath) const
90{
91	map<string, int>::const_iterator pos = m_resultMap.find(casePath);
92	DE_ASSERT(pos != m_resultMap.end());
93	return getTestCaseResult(pos->second);
94}
95
96TestCaseResultPtr BatchResult::getTestCaseResult (const char* casePath)
97{
98	map<string, int>::const_iterator pos = m_resultMap.find(casePath);
99	DE_ASSERT(pos != m_resultMap.end());
100	return getTestCaseResult(pos->second);
101}
102
103TestCaseResultPtr BatchResult::createTestCaseResult (const char* casePath)
104{
105	DE_ASSERT(!hasTestCaseResult(casePath));
106
107	m_testCaseResults.reserve(m_testCaseResults.size()+1);
108	m_resultMap[casePath] = (int)m_testCaseResults.size();
109
110	TestCaseResultPtr caseResult(new TestCaseResultData(casePath));
111	m_testCaseResults.push_back(caseResult);
112
113	return caseResult;
114}
115
116} // xe
117