1/*-------------------------------------------------------------------------
2 * drawElements Internal Test Module
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 delibs self-tests.
22 *//*--------------------------------------------------------------------*/
23
24#include "ditDelibsTests.hpp"
25#include "tcuTestLog.hpp"
26
27// depool
28#include "dePoolArray.h"
29#include "dePoolHeap.h"
30#include "dePoolHash.h"
31#include "dePoolSet.h"
32#include "dePoolHashSet.h"
33#include "dePoolHashArray.h"
34#include "dePoolMultiSet.h"
35
36// dethread
37#include "deThreadTest.h"
38#include "deThread.h"
39
40// deutil
41#include "deTimerTest.h"
42#include "deCommandLine.h"
43
44// debase
45#include "deInt32.h"
46#include "deFloat16.h"
47#include "deMath.h"
48#include "deSha1.h"
49#include "deMemory.h"
50
51// decpp
52#include "deBlockBuffer.hpp"
53#include "deFilePath.hpp"
54#include "dePoolArray.hpp"
55#include "deRingBuffer.hpp"
56#include "deSharedPtr.hpp"
57#include "deThreadSafeRingBuffer.hpp"
58#include "deUniquePtr.hpp"
59#include "deRandom.hpp"
60#include "deCommandLine.hpp"
61#include "deArrayBuffer.hpp"
62#include "deStringUtil.hpp"
63#include "deSpinBarrier.hpp"
64#include "deSTLUtil.hpp"
65#include "deAppendList.hpp"
66
67namespace dit
68{
69
70using tcu::TestLog;
71
72class DepoolTests : public tcu::TestCaseGroup
73{
74public:
75	DepoolTests (tcu::TestContext& testCtx)
76		: tcu::TestCaseGroup(testCtx, "depool", "depool self-tests")
77	{
78	}
79
80	void init (void)
81	{
82		addChild(new SelfCheckCase(m_testCtx, "array",		"dePoolArray_selfTest()",		dePoolArray_selfTest));
83		addChild(new SelfCheckCase(m_testCtx, "heap",		"dePoolHeap_selfTest()",		dePoolHeap_selfTest));
84		addChild(new SelfCheckCase(m_testCtx, "hash",		"dePoolHash_selfTest()",		dePoolHash_selfTest));
85		addChild(new SelfCheckCase(m_testCtx, "set",		"dePoolSet_selfTest()",			dePoolSet_selfTest));
86		addChild(new SelfCheckCase(m_testCtx, "hash_set",	"dePoolHashSet_selfTest()",		dePoolHashSet_selfTest));
87		addChild(new SelfCheckCase(m_testCtx, "hash_array",	"dePoolHashArray_selfTest()",	dePoolHashArray_selfTest));
88		addChild(new SelfCheckCase(m_testCtx, "multi_set",	"dePoolMultiSet_selfTest()",	dePoolMultiSet_selfTest));
89	}
90};
91
92extern "C"
93{
94typedef deUint32	(*GetUint32Func)	(void);
95}
96
97class GetUint32Case : public tcu::TestCase
98{
99public:
100	GetUint32Case (tcu::TestContext& testCtx, const char* name, const char* description, GetUint32Func func)
101		: tcu::TestCase	(testCtx, name, description)
102		, m_func		(func)
103		, m_description	(description)
104	{
105	}
106
107	IterateResult iterate (void)
108	{
109		m_testCtx.getLog() << TestLog::Message << m_description << " returned " << m_func() << TestLog::EndMessage;
110		m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
111		return STOP;
112	}
113
114private:
115	GetUint32Func	m_func;
116	const char *	m_description;
117};
118
119class DethreadTests : public tcu::TestCaseGroup
120{
121public:
122	DethreadTests (tcu::TestContext& testCtx)
123		: tcu::TestCaseGroup(testCtx, "dethread", "dethread self-tests")
124	{
125	}
126
127	void init (void)
128	{
129		addChild(new SelfCheckCase(m_testCtx, "thread",						"deThread_selfTest()",				deThread_selfTest));
130		addChild(new SelfCheckCase(m_testCtx, "mutex",						"deMutex_selfTest()",				deMutex_selfTest));
131		addChild(new SelfCheckCase(m_testCtx, "semaphore",					"deSemaphore_selfTest()",			deSemaphore_selfTest));
132		addChild(new SelfCheckCase(m_testCtx, "atomic",						"deAtomic_selfTest()",				deAtomic_selfTest));
133		addChild(new SelfCheckCase(m_testCtx, "singleton",					"deSingleton_selfTest()",			deSingleton_selfTest));
134		addChild(new GetUint32Case(m_testCtx, "total_physical_cores",		"deGetNumTotalPhysicalCores()",		deGetNumTotalPhysicalCores));
135		addChild(new GetUint32Case(m_testCtx, "total_logical_cores",		"deGetNumTotalLogicalCores()",		deGetNumTotalLogicalCores));
136		addChild(new GetUint32Case(m_testCtx, "available_logical_cores",	"deGetNumAvailableLogicalCores()",	deGetNumAvailableLogicalCores));
137	}
138};
139
140class DeutilTests : public tcu::TestCaseGroup
141{
142public:
143	DeutilTests (tcu::TestContext& testCtx)
144		: tcu::TestCaseGroup(testCtx, "deutil", "deutil self-tests")
145	{
146	}
147
148	void init (void)
149	{
150		addChild(new SelfCheckCase(m_testCtx, "timer",			"deTimer_selfTest()",		deTimer_selfTest));
151		addChild(new SelfCheckCase(m_testCtx, "command_line",	"deCommandLine_selfTest()",	deCommandLine_selfTest));
152	}
153};
154
155class DebaseTests : public tcu::TestCaseGroup
156{
157public:
158	DebaseTests (tcu::TestContext& testCtx)
159		: tcu::TestCaseGroup(testCtx, "debase", "debase self-tests")
160	{
161	}
162
163	void init (void)
164	{
165		addChild(new SelfCheckCase(m_testCtx, "int32",		"deInt32_selfTest()",	deInt32_selfTest));
166		addChild(new SelfCheckCase(m_testCtx, "float16",	"deFloat16_selfTest()",	deFloat16_selfTest));
167		addChild(new SelfCheckCase(m_testCtx, "math",		"deMath_selfTest()",	deMath_selfTest));
168		addChild(new SelfCheckCase(m_testCtx, "sha1",		"deSha1_selfTest()",	deSha1_selfTest));
169		addChild(new SelfCheckCase(m_testCtx, "memory",		"deMemory_selfTest()",	deMemory_selfTest));
170	}
171};
172
173class DecppTests : public tcu::TestCaseGroup
174{
175public:
176	DecppTests (tcu::TestContext& testCtx)
177		: tcu::TestCaseGroup(testCtx, "decpp", "decpp self-tests")
178	{
179	}
180
181	void init (void)
182	{
183		addChild(new SelfCheckCase(m_testCtx, "block_buffer",				"de::BlockBuffer_selfTest()",			de::BlockBuffer_selfTest));
184		addChild(new SelfCheckCase(m_testCtx, "file_path",					"de::FilePath_selfTest()",				de::FilePath_selfTest));
185		addChild(new SelfCheckCase(m_testCtx, "pool_array",					"de::PoolArray_selfTest()",				de::PoolArray_selfTest));
186		addChild(new SelfCheckCase(m_testCtx, "ring_buffer",				"de::RingBuffer_selfTest()",			de::RingBuffer_selfTest));
187		addChild(new SelfCheckCase(m_testCtx, "shared_ptr",					"de::SharedPtr_selfTest()",				de::SharedPtr_selfTest));
188		addChild(new SelfCheckCase(m_testCtx, "thread_safe_ring_buffer",	"de::ThreadSafeRingBuffer_selfTest()",	de::ThreadSafeRingBuffer_selfTest));
189		addChild(new SelfCheckCase(m_testCtx, "unique_ptr",					"de::UniquePtr_selfTest()",				de::UniquePtr_selfTest));
190		addChild(new SelfCheckCase(m_testCtx, "random",						"de::Random_selfTest()",				de::Random_selfTest));
191		addChild(new SelfCheckCase(m_testCtx, "commandline",				"de::cmdline::selfTest()",				de::cmdline::selfTest));
192		addChild(new SelfCheckCase(m_testCtx, "array_buffer",				"de::ArrayBuffer_selfTest()",			de::ArrayBuffer_selfTest));
193		addChild(new SelfCheckCase(m_testCtx, "string_util",				"de::StringUtil_selfTest()",			de::StringUtil_selfTest));
194		addChild(new SelfCheckCase(m_testCtx, "spin_barrier",				"de::SpinBarrier_selfTest()",			de::SpinBarrier_selfTest));
195		addChild(new SelfCheckCase(m_testCtx, "stl_util",					"de::STLUtil_selfTest()",				de::STLUtil_selfTest));
196		addChild(new SelfCheckCase(m_testCtx, "append_list",				"de::AppendList_selfTest()",			de::AppendList_selfTest));
197	}
198};
199
200DelibsTests::DelibsTests (tcu::TestContext& testCtx)
201	: tcu::TestCaseGroup(testCtx, "delibs", "delibs Tests")
202{
203}
204
205DelibsTests::~DelibsTests (void)
206{
207}
208
209void DelibsTests::init (void)
210{
211	addChild(new DepoolTests	(m_testCtx));
212	addChild(new DethreadTests	(m_testCtx));
213	addChild(new DeutilTests	(m_testCtx));
214	addChild(new DebaseTests	(m_testCtx));
215	addChild(new DecppTests		(m_testCtx));
216}
217
218} // dit
219