#ifndef _VKTQUERYPOOLOCCLUSIONTESTS_HPP
#define _VKTQUERYPOOLOCCLUSIONTESTS_HPP
/*------------------------------------------------------------------------
 * Vulkan Conformance Tests
 * ------------------------
 *
 * Copyright (c) 2015 The Khronos Group Inc.
 * Copyright (c) 2015 Intel Corporation
 *
 * 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 Vulkan Occlusion Query Tests
 *//*--------------------------------------------------------------------*/

#include "vktTestCase.hpp"

namespace vkt
{
namespace QueryPool
{

class QueryPoolOcclusionTests : public tcu::TestCaseGroup
{
public:
	QueryPoolOcclusionTests		(tcu::TestContext &testCtx);
	~QueryPoolOcclusionTests	(void);
	void init					(void);

private:
	QueryPoolOcclusionTests					(const QueryPoolOcclusionTests &other);
	QueryPoolOcclusionTests&	operator=	(const QueryPoolOcclusionTests &other);
};

} // QueryPool
} // vkt

#endif // _VKTQUERYPOOLOCCLUSIONTESTS_HPP
