Don't assume rendering complete before buffer latch
[platform/upstream/VK-GL-CTS.git] / executor / xeBatchResult.cpp
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
27 using std::vector;
28 using std::string;
29 using std::map;
30
31 namespace xe
32 {
33
34 // InfoLog
35
36 InfoLog::InfoLog (void)
37 {
38 }
39
40 void InfoLog::append (const deUint8* bytes, size_t numBytes)
41 {
42         DE_ASSERT(numBytes > 0);
43         const size_t oldSize = m_data.size();
44         m_data.resize(oldSize+numBytes);
45         deMemcpy(&m_data[oldSize], bytes, numBytes);
46 }
47
48 // TestCaseResultData
49
50 TestCaseResultData::TestCaseResultData (const char* casePath)
51         : m_casePath    (casePath)
52         , m_statusCode  (TESTSTATUSCODE_LAST)
53 {
54 }
55
56 TestCaseResultData::~TestCaseResultData (void)
57 {
58 }
59
60 void TestCaseResultData::setTestResult (TestStatusCode statusCode, const char* statusDetails)
61 {
62         m_statusCode    = statusCode;
63         m_statusDetails = statusDetails;
64 }
65
66 void 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
76 BatchResult::BatchResult (void)
77 {
78 }
79
80 BatchResult::~BatchResult (void)
81 {
82 }
83
84 bool BatchResult::hasTestCaseResult (const char* casePath) const
85 {
86         return m_resultMap.find(casePath) != m_resultMap.end();
87 }
88
89 ConstTestCaseResultPtr 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
96 TestCaseResultPtr 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
103 TestCaseResultPtr 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