• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _TCUTESTPACKAGE_HPP
2 #define _TCUTESTPACKAGE_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program Tester Core
5  * ----------------------------------------
6  *
7  * Copyright 2014 The Android Open Source Project
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  *//*!
22  * \file
23  * \brief Base class for a test case.
24  *//*--------------------------------------------------------------------*/
25 
26 #include "tcuDefs.hpp"
27 #include "tcuTestCase.hpp"
28 #include "tcuTestCaseWrapper.hpp"
29 
30 namespace tcu
31 {
32 
33 /*--------------------------------------------------------------------*//*!
34  * \brief Base class for test packages.
35  *
36  * Test packages are root-level test groups. Test case exposes couple of
37  * extra customization points. Test package can define custom TestCaseWrapper
38  * and archive (usually ResourcePrefix around default archive) for resources.
39  *
40  * Test package is typically responsible of setting up rendering context
41  * for test cases.
42  *//*--------------------------------------------------------------------*/
43 class TestPackage : public TestNode
44 {
45 public:
46 								TestPackage			(TestContext& testCtx, const char* name, const char* description);
47 	virtual						~TestPackage		(void);
48 
49 	virtual IterateResult		iterate				(void);
50 
51 	virtual TestCaseWrapper&	getTestCaseWrapper	(void) = DE_NULL;
52 	virtual Archive&			getArchive			(void) = DE_NULL;
53 };
54 
55 // TestPackageRegistry
56 
57 typedef TestPackage* (*TestPackageCreateFunc)	(TestContext& testCtx);
58 
59 class TestPackageRegistry
60 {
61 public:
62 	struct PackageInfo
63 	{
PackageInfotcu::TestPackageRegistry::PackageInfo64 		PackageInfo (std::string name_, TestPackageCreateFunc createFunc_) : name(name_), createFunc(createFunc_) {}
65 
66 		std::string				name;
67 		TestPackageCreateFunc	createFunc;
68 	};
69 
70 	static TestPackageRegistry*			getSingleton			(void);
71 	static void							destroy					(void);
72 
73 	void								registerPackage			(const char* name, TestPackageCreateFunc createFunc);
74 	const std::vector<PackageInfo*>&	getPackageInfos			(void) const;
75 	PackageInfo*						getPackageInfoByName	(const char* name) const;
76 	TestPackage*						createPackage			(const char* name, TestContext& testCtx) const;
77 
78 private:
79 										TestPackageRegistry		(void);
80 										~TestPackageRegistry	(void);
81 
82 	static TestPackageRegistry*			getOrDestroy			(bool isCreate);
83 
84 	// Member variables.
85 	std::vector<PackageInfo*>			m_packageInfos;
86 };
87 
88 // TestPackageDescriptor
89 
90 class TestPackageDescriptor
91 {
92 public:
93 						TestPackageDescriptor		(const char* name, TestPackageCreateFunc createFunc);
94 						~TestPackageDescriptor		(void);
95 };
96 
97 // TestPackageRoot
98 
99 class TestPackageRoot : public TestNode
100 {
101 public:
102 							TestPackageRoot		(TestContext& testCtx);
103 							TestPackageRoot		(TestContext& testCtx, const std::vector<TestNode*>& children);
104 	virtual					~TestPackageRoot	(void);
105 
106 	virtual IterateResult	iterate				(void);
107 };
108 
109 } // tcu
110 
111 #endif // _TCUTESTPACKAGE_HPP
112