1#ifndef _TEGLSIMPLECONFIGCASE_HPP
2#define _TEGLSIMPLECONFIGCASE_HPP
3/*-------------------------------------------------------------------------
4 * drawElements Quality Program EGL Module
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 Simple Context construction test.
24 *//*--------------------------------------------------------------------*/
25
26#include "tcuDefs.hpp"
27#include "teglTestCase.hpp"
28#include "egluConfigFilter.hpp"
29
30#include <vector>
31#include <string>
32
33namespace deqp
34{
35namespace egl
36{
37
38class SimpleConfigCase : public TestCase
39{
40public:
41							SimpleConfigCase	(EglTestContext& eglTestCtx, const char* name, const char* description, const eglu::FilterList& filters);
42	virtual					~SimpleConfigCase	(void);
43
44	void					init				(void);
45	void					deinit				(void);
46	IterateResult			iterate				(void);
47
48protected:
49	eglw::EGLDisplay		getDisplay			(void) { return m_display; }
50
51private:
52	virtual void			executeForConfig	(eglw::EGLDisplay display, eglw::EGLConfig config)	= DE_NULL;
53
54							SimpleConfigCase	(const SimpleConfigCase& other);
55	SimpleConfigCase&		operator=			(const SimpleConfigCase& other);
56
57	const eglu::FilterList						m_filters;
58
59	eglw::EGLDisplay							m_display;
60	std::vector<eglw::EGLConfig>				m_configs;
61	std::vector<eglw::EGLConfig>::iterator		m_configIter;
62};
63
64class NamedFilterList : public eglu::FilterList
65{
66public:
67					NamedFilterList		(const char* name, const char* description) : m_name(name), m_description(description) {}
68
69	const char*		getName				(void) const	{ return m_name.c_str();		}
70	const char*		getDescription		(void) const	{ return m_description.c_str();	}
71
72private:
73	std::string		m_name;
74	std::string		m_description;
75};
76
77void getDefaultFilterLists (std::vector<NamedFilterList>& lists, const eglu::FilterList& baseFilters);
78
79} // egl
80} // deqp
81
82#endif // _TEGLSIMPLECONFIGCASE_HPP
83