1 #ifndef _XETESTCASERESULT_HPP
2 #define _XETESTCASERESULT_HPP
3 /*-------------------------------------------------------------------------
4 * drawElements Quality Program Test Executor
5 * ------------------------------------------
7 * Copyright 2014 The Android Open Source Project
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
13 * http://www.apache.org/licenses/LICENSE-2.0
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.
23 * \brief Test case result models.
24 *//*--------------------------------------------------------------------*/
27 #include "xeTestCase.hpp"
38 TESTSTATUSCODE_PASS, //!< Test case passed.
39 TESTSTATUSCODE_FAIL, //!< Test case failed (not passed).
40 TESTSTATUSCODE_QUALITY_WARNING, //!< Result within specification, but suspicious quality wise
41 TESTSTATUSCODE_COMPATIBILITY_WARNING, //!< Result within specification, but likely to cause fragmentation
42 TESTSTATUSCODE_PENDING, //!< Not yet started.
43 TESTSTATUSCODE_RUNNING, //!< Currently running (not stored in database).
44 TESTSTATUSCODE_NOT_SUPPORTED, //!< Some feature was not supported in the implementation.
45 TESTSTATUSCODE_RESOURCE_ERROR, //!< A resource error has occurred.
46 TESTSTATUSCODE_INTERNAL_ERROR, //!< An internal error has occurred.
47 TESTSTATUSCODE_CANCELED, //!< User canceled the execution
48 TESTSTATUSCODE_TIMEOUT, //!< Test was killed because of watch dog timeout.
49 TESTSTATUSCODE_CRASH, //!< Test executable crashed before finishing the test.
50 TESTSTATUSCODE_DISABLED, //!< Test case disabled (for current target)
51 TESTSTATUSCODE_TERMINATED, //!< Terminated for other reason.
52 TESTSTATUSCODE_WAIVER, //!< Test case waived.
57 const char* getTestStatusCodeName (TestStatusCode statusCode);
84 // \todo [2014-02-28 pyry] Make List<T> for items that have only specific subitems.
92 int getNumItems (void) const { return (int)m_items.size(); }
93 const Item& getItem (int ndx) const { return *m_items[ndx]; }
94 Item& getItem (int ndx) { return *m_items[ndx]; }
100 std::vector<Item*> m_items;
103 template <typename T>
104 T* List::allocItem (void)
106 m_items.reserve(m_items.size()+1);
108 m_items.push_back(static_cast<ri::Item*>(item));
114 class TestCaseResultHeader
117 TestCaseResultHeader (void) : caseType(TESTCASETYPE_LAST), statusCode(TESTSTATUSCODE_LAST) {}
119 std::string caseVersion; //!< Test case version.
120 std::string casePath; //!< Full test case path.
121 TestCaseType caseType; //!< Test case type.
122 TestStatusCode statusCode; //!< Test status code.
123 std::string statusDetails; //!< Status description.
126 class TestCaseResult : public TestCaseResultHeader
129 ri::List resultItems; //!< Test log items.
168 NUMVALTYPE_EMPTY = 0,
175 NumericValue (void) : m_type(NUMVALTYPE_EMPTY) {}
176 NumericValue (deInt64 value) : m_type(NUMVALTYPE_INT64) { m_value.int64 = value; }
177 NumericValue (double value) : m_type(NUMVALTYPE_FLOAT64) { m_value.float64 = value; }
179 Type getType (void) const { return m_type; }
180 deInt64 getInt64 (void) const { DE_ASSERT(getType() == NUMVALTYPE_INT64); return m_value.int64; }
181 double getFloat64 (void) const { DE_ASSERT(getType() == NUMVALTYPE_FLOAT64); return m_value.float64; }
192 std::ostream& operator<< (std::ostream& str, const NumericValue& value);
198 virtual ~Item (void) {}
200 Type getType (void) const { return m_type; }
203 Item (Type type) : m_type(type) {}
206 Item (const Item& other);
207 Item& operator= (const Item& other);
212 class Result : public Item
215 Result (void) : Item(TYPE_RESULT), statusCode(TESTSTATUSCODE_LAST) {}
218 TestStatusCode statusCode;
222 class Text : public Item
225 Text (void) : Item(TYPE_TEXT) {}
231 class Number : public Item
234 Number (void) : Item(TYPE_NUMBER) {}
238 std::string description;
244 class Image : public Item
257 COMPRESSION_NONE = 0,
263 Image (void) : Item(TYPE_IMAGE), width(0), height(0), format(FORMAT_LAST), compression(COMPRESSION_LAST) {}
267 std::string description;
271 Compression compression;
272 std::vector<deUint8> data;
275 class ImageSet : public Item
278 ImageSet (void) : Item(TYPE_IMAGESET) {}
282 std::string description;
286 class ShaderSource : public Item
289 ShaderSource (void) : Item(TYPE_SHADERSOURCE) {}
290 ~ShaderSource (void) {}
295 class SpirVSource : public Item
298 SpirVSource (void) : Item(TYPE_SPIRVSOURCE) {}
299 ~SpirVSource (void) {}
304 class InfoLog : public Item
307 InfoLog (void) : Item(TYPE_INFOLOG) {}
313 class Shader : public Item
318 SHADERTYPE_VERTEX = 0,
321 SHADERTYPE_TESS_CONTROL,
322 SHADERTYPE_TESS_EVALUATION,
326 SHADERTYPE_CLOSEST_HIT,
328 SHADERTYPE_INTERSECTION,
336 Shader (void) : Item(TYPE_SHADER), shaderType(SHADERTYPE_LAST), compileStatus(false) {}
339 ShaderType shaderType;
345 class ShaderProgram : public Item
348 ShaderProgram (void) : Item(TYPE_SHADERPROGRAM), linkStatus(false) {}
349 ~ShaderProgram (void) {}
356 class EglConfig : public Item
369 bool bindToTextureRGB;
370 bool bindToTextureRGBA;
371 std::string colorBufferType;
372 std::string configCaveat;
374 std::string conformant;
378 int maxPBufferHeight;
379 int maxPBufferPixels;
382 bool nativeRenderable;
383 std::string renderableType;
387 std::string surfaceTypes;
388 std::string transparentType;
389 int transparentRedValue;
390 int transparentGreenValue;
391 int transparentBlueValue;
394 inline EglConfig::EglConfig (void)
395 : Item (TYPE_EGLCONFIG)
403 , bindToTextureRGB (false)
404 , bindToTextureRGBA (false)
408 , maxPBufferWidth (0)
409 , maxPBufferHeight (0)
410 , maxPBufferPixels (0)
411 , maxSwapInterval (0)
412 , minSwapInterval (0)
413 , nativeRenderable (false)
417 , transparentRedValue (0)
418 , transparentGreenValue (0)
419 , transparentBlueValue (0)
423 class EglConfigSet : public Item
426 EglConfigSet (void) : Item(TYPE_EGLCONFIGSET) {}
427 ~EglConfigSet (void) {}
430 std::string description;
434 class Section : public Item
437 Section (void) : Item(TYPE_SECTION) {}
441 std::string description;
445 class KernelSource : public Item
448 KernelSource (void) : Item(TYPE_KERNELSOURCE) {}
449 ~KernelSource (void) {}
454 class CompileInfo : public Item
457 CompileInfo (void) : Item(TYPE_COMPILEINFO), compileStatus(false) {}
458 ~CompileInfo (void) {}
461 std::string description;
466 class ValueInfo : public Item
477 ValueInfo (void) : Item(TYPE_VALUEINFO), tag(VALUETAG_LAST) {}
481 std::string description;
486 class SampleInfo : public Item
489 SampleInfo (void) : Item(TYPE_SAMPLEINFO) {}
490 ~SampleInfo (void) {}
495 class SampleValue : public Item
498 SampleValue (void) : Item(TYPE_SAMPLEVALUE) {}
499 ~SampleValue (void) {}
504 class Sample : public Item
507 Sample (void) : Item(TYPE_SAMPLE) {}
513 class SampleList : public Item
516 SampleList (void) : Item(TYPE_SAMPLELIST) {}
517 ~SampleList (void) {}
520 std::string description;
521 SampleInfo sampleInfo;
528 #endif // _XETESTCASERESULT_HPP