Import dEQP.

Import drawElements Quality Program from an internal repository.

Bug: 17388917
Change-Id: Ic109fe4a57e31b2a816113d90fbdf51a43e7abeb
diff --git a/executor/xeBatchResult.hpp b/executor/xeBatchResult.hpp
new file mode 100644
index 0000000..ef6bc6d
--- /dev/null
+++ b/executor/xeBatchResult.hpp
@@ -0,0 +1,132 @@
+#ifndef _XEBATCHRESULT_HPP
+#define _XEBATCHRESULT_HPP
+/*-------------------------------------------------------------------------
+ * 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 "xeDefs.hpp"
+#include "xeTestCase.hpp"
+#include "xeTestCaseResult.hpp"
+#include "deSharedPtr.hpp"
+
+#include <string>
+#include <vector>
+#include <map>
+
+namespace xe
+{
+
+class SessionInfo
+{
+public:
+	// Produced by test binary.
+	std::string			releaseName;
+	std::string			releaseId;
+	std::string			targetName;
+
+	// Produced by Candy.
+	std::string			candyTargetName;
+	std::string			configName;
+	std::string			resultName;
+	std::string			timestamp;
+};
+
+class InfoLog
+{
+public:
+							InfoLog			(void);
+
+	int						getSize			(void) const { return (int)m_data.size();						}
+	const deUint8*			getBytes		(void) const { return !m_data.empty() ? &m_data[0] : DE_NULL;	}
+
+	void					append			(const deUint8* bytes, int numBytes);
+
+private:
+							InfoLog			(const InfoLog& other);
+	InfoLog&				operator=		(const InfoLog& other);
+
+	std::vector<deUint8>	m_data;
+};
+
+class TestCaseResultData
+{
+public:
+								TestCaseResultData				(const char* casePath);
+								~TestCaseResultData				(void);
+
+	const char*					getTestCasePath					(void) const	{ return m_casePath.c_str();		}
+
+	void						setTestResult					(TestStatusCode code, const char* details);
+
+	TestStatusCode				getStatusCode					(void) const	{ return m_statusCode;				}
+	const char*					getStatusDetails				(void) const	{ return m_statusDetails.c_str();	}
+
+	int							getDataSize						(void) const	{ return (int)m_data.size();		}
+	void						setDataSize						(int size)		{ m_data.resize(size);				}
+
+	const deUint8*				getData							(void) const	{ return !m_data.empty() ? &m_data[0] : DE_NULL;	}
+	deUint8*					getData							(void)			{ return !m_data.empty() ? &m_data[0] : DE_NULL;	}
+
+	void						clear							(void);
+
+private:
+	// \note statusCode and statusDetails are either set by BatchExecutor or later parsed from data.
+	std::string					m_casePath;
+	TestStatusCode				m_statusCode;
+	std::string					m_statusDetails;
+	std::vector<deUint8>		m_data;
+};
+
+typedef de::SharedPtr<TestCaseResultData>			TestCaseResultPtr;
+typedef de::SharedPtr<const TestCaseResultData>		ConstTestCaseResultPtr;
+
+class BatchResult
+{
+public:
+										BatchResult				(void);
+										~BatchResult			(void);
+
+	const SessionInfo&					getSessionInfo			(void) const	{ return m_sessionInfo;	}
+	SessionInfo&						getSessionInfo			(void)			{ return m_sessionInfo;	}
+
+	int									getNumTestCaseResults	(void) const	{ return (int)m_testCaseResults.size();							}
+	ConstTestCaseResultPtr				getTestCaseResult		(int ndx) const	{ return ConstTestCaseResultPtr(m_testCaseResults[ndx]);		}
+	TestCaseResultPtr					getTestCaseResult		(int ndx)		{ return m_testCaseResults[ndx];								}
+
+	bool								hasTestCaseResult		(const char* casePath) const;
+	ConstTestCaseResultPtr				getTestCaseResult		(const char* casePath) const;
+	TestCaseResultPtr					getTestCaseResult		(const char* casePath);
+
+	TestCaseResultPtr					createTestCaseResult	(const char* casePath);
+
+private:
+										BatchResult				(const BatchResult& other);
+	BatchResult&						operator=				(const BatchResult& other);
+
+	SessionInfo							m_sessionInfo;
+	std::vector<TestCaseResultPtr>		m_testCaseResults;
+	std::map<std::string, int>			m_resultMap;
+};
+
+} // xe
+
+#endif // _XEBATCHRESULT_HPP