Fix PIPELINE_STAGE_TOP_OF_PIPE_BIT usage in api tests
[platform/upstream/VK-GL-CTS.git] / modules / gles31 / functional / es31fNegativeTestShared.hpp
1 #ifndef _ES31FNEGATIVETESTSHARED_HPP
2 #define _ES31FNEGATIVETESTSHARED_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program OpenGL ES 3.1 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 Shared structures for ES 3.1 negative API tests
24  *//*--------------------------------------------------------------------*/
25
26 #include "tcuDefs.hpp"
27 #include "glwDefs.hpp"
28 #include "gluCallLogWrapper.hpp"
29 #include "gluShaderUtil.hpp"
30 #include "tes31TestCase.hpp"
31
32 namespace tcu
33 {
34
35 class ResultCollector;
36
37 } // tcu
38
39 namespace deqp
40 {
41 namespace gles31
42 {
43 namespace Functional
44 {
45 namespace NegativeTestShared
46 {
47
48 class ErrorCase : public TestCase
49 {
50 public:
51                                                                 ErrorCase               (Context& ctx, const char* name, const char* desc);
52         virtual                                         ~ErrorCase              (void) {}
53
54         virtual void                            expectError             (glw::GLenum error0, glw::GLenum error1) = 0;
55 };
56
57 class NegativeTestContext : public glu::CallLogWrapper
58 {
59 public:
60                                                                 NegativeTestContext             (ErrorCase& host, glu::RenderContext& renderCtx, const glu::ContextInfo& ctxInfo, tcu::TestLog& log, tcu::ResultCollector& results, bool enableLog);
61                                                                 ~NegativeTestContext    ();
62
63         const tcu::ResultCollector&     getResults                              (void) const;
64
65         void                                            fail                                    (const std::string& msg);
66         int                                                     getInteger                              (glw::GLenum pname) const;
67         const glu::RenderContext&       getRenderContext                (void) const { return m_renderCtx; }
68         const glu::ContextInfo&         getContextInfo                  (void) const { return m_ctxInfo; }
69         void                                            beginSection                    (const std::string& desc);
70         void                                            endSection                              (void);
71
72         void                                            expectError                             (glw::GLenum error);
73         void                                            expectError                             (glw::GLenum error0, glw::GLenum error1);
74         bool                                            isShaderSupported               (glu::ShaderType shaderType);
75         bool                                            isExtensionSupported    (std::string extension);
76
77 protected:
78         ErrorCase&                                      m_host;
79
80 private:
81         glu::RenderContext&                     m_renderCtx;
82         const glu::ContextInfo&         m_ctxInfo;
83         tcu::ResultCollector&           m_results;
84         int                                                     m_openSections;
85 };
86
87 typedef void (*TestFunc)(NegativeTestContext& ctx);
88
89 struct FunctionContainer
90 {
91         TestFunc        function;
92         const char* name;
93         const char* desc;
94 };
95
96 } // NegativeTestShared
97 } // Functional
98 } // gles31
99 } // deqp
100
101 #endif // _ES31FNEGATIVETESTSHARED_HPP