Import dEQP.

Import drawElements Quality Program from an internal repository.

Bug: 17388917
Change-Id: Ic109fe4a57e31b2a816113d90fbdf51a43e7abeb
diff --git a/executor/xeBatchResult.cpp b/executor/xeBatchResult.cpp
new file mode 100644
index 0000000..4a8f7e4
--- /dev/null
+++ b/executor/xeBatchResult.cpp
@@ -0,0 +1,116 @@
+/*-------------------------------------------------------------------------
+ * drawElements Quality Program Test Executor
+ * ------------------------------------------
+ *
+ * Copyright 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief Test batch result.
+ *//*--------------------------------------------------------------------*/
+
+#include "xeBatchResult.hpp"
+#include "deMemory.h"
+
+using std::vector;
+using std::string;
+using std::map;
+
+namespace xe
+{
+
+// InfoLog
+
+InfoLog::InfoLog (void)
+{
+}
+
+void InfoLog::append (const deUint8* bytes, int numBytes)
+{
+	DE_ASSERT(numBytes > 0);
+	int oldSize = (int)m_data.size();
+	m_data.resize(oldSize+numBytes);
+	deMemcpy(&m_data[oldSize], bytes, numBytes);
+}
+
+// TestCaseResultData
+
+TestCaseResultData::TestCaseResultData (const char* casePath)
+	: m_casePath	(casePath)
+	, m_statusCode	(TESTSTATUSCODE_LAST)
+{
+}
+
+TestCaseResultData::~TestCaseResultData (void)
+{
+}
+
+void TestCaseResultData::setTestResult (TestStatusCode statusCode, const char* statusDetails)
+{
+	m_statusCode	= statusCode;
+	m_statusDetails	= statusDetails;
+}
+
+void TestCaseResultData::clear (void)
+{
+	m_statusCode = TESTSTATUSCODE_LAST;
+	m_statusDetails.clear();
+	m_casePath.clear();
+	m_data.clear();
+}
+
+// BatchResult
+
+BatchResult::BatchResult (void)
+{
+}
+
+BatchResult::~BatchResult (void)
+{
+}
+
+bool BatchResult::hasTestCaseResult (const char* casePath) const
+{
+	return m_resultMap.find(casePath) != m_resultMap.end();
+}
+
+ConstTestCaseResultPtr BatchResult::getTestCaseResult (const char* casePath) const
+{
+	map<string, int>::const_iterator pos = m_resultMap.find(casePath);
+	DE_ASSERT(pos != m_resultMap.end());
+	return getTestCaseResult(pos->second);
+}
+
+TestCaseResultPtr BatchResult::getTestCaseResult (const char* casePath)
+{
+	map<string, int>::const_iterator pos = m_resultMap.find(casePath);
+	DE_ASSERT(pos != m_resultMap.end());
+	return getTestCaseResult(pos->second);
+}
+
+TestCaseResultPtr BatchResult::createTestCaseResult (const char* casePath)
+{
+	DE_ASSERT(!hasTestCaseResult(casePath));
+
+	m_testCaseResults.reserve(m_testCaseResults.size()+1);
+	m_resultMap[casePath] = (int)m_testCaseResults.size();
+
+	TestCaseResultPtr caseResult(new TestCaseResultData(casePath));
+	m_testCaseResults.push_back(caseResult);
+
+	return caseResult;
+}
+
+} // xe