1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program Tester Core
3*35238bceSAndroid Build Coastguard Worker * ----------------------------------------
4*35238bceSAndroid Build Coastguard Worker *
5*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project
6*35238bceSAndroid Build Coastguard Worker *
7*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
8*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
9*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at
10*35238bceSAndroid Build Coastguard Worker *
11*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
12*35238bceSAndroid Build Coastguard Worker *
13*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
14*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
15*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
17*35238bceSAndroid Build Coastguard Worker * limitations under the License.
18*35238bceSAndroid Build Coastguard Worker *
19*35238bceSAndroid Build Coastguard Worker *//*!
20*35238bceSAndroid Build Coastguard Worker * \file
21*35238bceSAndroid Build Coastguard Worker * \brief Basic definitions.
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "tcuDefs.hpp"
25*35238bceSAndroid Build Coastguard Worker #include "deFilePath.hpp"
26*35238bceSAndroid Build Coastguard Worker #include "qpDebugOut.h"
27*35238bceSAndroid Build Coastguard Worker
28*35238bceSAndroid Build Coastguard Worker #include <sstream>
29*35238bceSAndroid Build Coastguard Worker #include <stdarg.h>
30*35238bceSAndroid Build Coastguard Worker
31*35238bceSAndroid Build Coastguard Worker namespace tcu
32*35238bceSAndroid Build Coastguard Worker {
33*35238bceSAndroid Build Coastguard Worker
die(const char * format,...)34*35238bceSAndroid Build Coastguard Worker void die(const char *format, ...)
35*35238bceSAndroid Build Coastguard Worker {
36*35238bceSAndroid Build Coastguard Worker va_list args;
37*35238bceSAndroid Build Coastguard Worker va_start(args, format);
38*35238bceSAndroid Build Coastguard Worker qpDiev(format, args);
39*35238bceSAndroid Build Coastguard Worker va_end(args);
40*35238bceSAndroid Build Coastguard Worker }
41*35238bceSAndroid Build Coastguard Worker
print(const char * format,...)42*35238bceSAndroid Build Coastguard Worker void print(const char *format, ...)
43*35238bceSAndroid Build Coastguard Worker {
44*35238bceSAndroid Build Coastguard Worker va_list args;
45*35238bceSAndroid Build Coastguard Worker va_start(args, format);
46*35238bceSAndroid Build Coastguard Worker qpPrintv(format, args);
47*35238bceSAndroid Build Coastguard Worker va_end(args);
48*35238bceSAndroid Build Coastguard Worker }
49*35238bceSAndroid Build Coastguard Worker
printError(const char * format,...)50*35238bceSAndroid Build Coastguard Worker void printError(const char *format, ...)
51*35238bceSAndroid Build Coastguard Worker {
52*35238bceSAndroid Build Coastguard Worker va_list args;
53*35238bceSAndroid Build Coastguard Worker va_start(args, format);
54*35238bceSAndroid Build Coastguard Worker qpPrintErrorv(format, args);
55*35238bceSAndroid Build Coastguard Worker va_end(args);
56*35238bceSAndroid Build Coastguard Worker }
57*35238bceSAndroid Build Coastguard Worker
formatError(const char * message,const char * expr,const char * file,int line)58*35238bceSAndroid Build Coastguard Worker static std::string formatError(const char *message, const char *expr, const char *file, int line)
59*35238bceSAndroid Build Coastguard Worker {
60*35238bceSAndroid Build Coastguard Worker std::ostringstream msg;
61*35238bceSAndroid Build Coastguard Worker msg << (message ? message : "Runtime check failed");
62*35238bceSAndroid Build Coastguard Worker
63*35238bceSAndroid Build Coastguard Worker if (expr)
64*35238bceSAndroid Build Coastguard Worker msg << ": '" << expr << '\'';
65*35238bceSAndroid Build Coastguard Worker
66*35238bceSAndroid Build Coastguard Worker if (file)
67*35238bceSAndroid Build Coastguard Worker msg << " at " << de::FilePath(file).getBaseName() << ":" << line;
68*35238bceSAndroid Build Coastguard Worker
69*35238bceSAndroid Build Coastguard Worker return msg.str();
70*35238bceSAndroid Build Coastguard Worker }
71*35238bceSAndroid Build Coastguard Worker
Exception(const char * message,const char * expr,const char * file,int line)72*35238bceSAndroid Build Coastguard Worker Exception::Exception(const char *message, const char *expr, const char *file, int line)
73*35238bceSAndroid Build Coastguard Worker : std::runtime_error(formatError(message, expr, file, line))
74*35238bceSAndroid Build Coastguard Worker , m_message(message ? message : "Runtime check failed")
75*35238bceSAndroid Build Coastguard Worker {
76*35238bceSAndroid Build Coastguard Worker }
77*35238bceSAndroid Build Coastguard Worker
Exception(const std::string & message)78*35238bceSAndroid Build Coastguard Worker Exception::Exception(const std::string &message) : std::runtime_error(message), m_message(message)
79*35238bceSAndroid Build Coastguard Worker {
80*35238bceSAndroid Build Coastguard Worker }
81*35238bceSAndroid Build Coastguard Worker
TestException(const char * message,const char * expr,const char * file,int line,qpTestResult result)82*35238bceSAndroid Build Coastguard Worker TestException::TestException(const char *message, const char *expr, const char *file, int line, qpTestResult result)
83*35238bceSAndroid Build Coastguard Worker : Exception(formatError(message, expr, file, line))
84*35238bceSAndroid Build Coastguard Worker , m_result(result)
85*35238bceSAndroid Build Coastguard Worker {
86*35238bceSAndroid Build Coastguard Worker }
87*35238bceSAndroid Build Coastguard Worker
TestException(const std::string & message,qpTestResult result)88*35238bceSAndroid Build Coastguard Worker TestException::TestException(const std::string &message, qpTestResult result) : Exception(message), m_result(result)
89*35238bceSAndroid Build Coastguard Worker {
90*35238bceSAndroid Build Coastguard Worker }
91*35238bceSAndroid Build Coastguard Worker
TestError(const char * message,const char * expr,const char * file,int line,qpTestResult result)92*35238bceSAndroid Build Coastguard Worker TestError::TestError(const char *message, const char *expr, const char *file, int line, qpTestResult result)
93*35238bceSAndroid Build Coastguard Worker : TestException(message, expr, file, line, result)
94*35238bceSAndroid Build Coastguard Worker {
95*35238bceSAndroid Build Coastguard Worker }
96*35238bceSAndroid Build Coastguard Worker
TestError(const char * message,const char * expr,const char * file,int line)97*35238bceSAndroid Build Coastguard Worker TestError::TestError(const char *message, const char *expr, const char *file, int line)
98*35238bceSAndroid Build Coastguard Worker : TestException(message, expr, file, line, QP_TEST_RESULT_FAIL)
99*35238bceSAndroid Build Coastguard Worker {
100*35238bceSAndroid Build Coastguard Worker }
TestError(const std::string & message,const char * expr,const char * file,int line)101*35238bceSAndroid Build Coastguard Worker TestError::TestError(const std::string &message, const char *expr, const char *file, int line)
102*35238bceSAndroid Build Coastguard Worker : TestException(message.c_str(), expr, file, line, QP_TEST_RESULT_FAIL)
103*35238bceSAndroid Build Coastguard Worker {
104*35238bceSAndroid Build Coastguard Worker }
105*35238bceSAndroid Build Coastguard Worker
TestError(const std::string & message)106*35238bceSAndroid Build Coastguard Worker TestError::TestError(const std::string &message) : TestException(message, QP_TEST_RESULT_FAIL)
107*35238bceSAndroid Build Coastguard Worker {
108*35238bceSAndroid Build Coastguard Worker }
109*35238bceSAndroid Build Coastguard Worker
InternalError(const char * message,const char * expr,const char * file,int line)110*35238bceSAndroid Build Coastguard Worker InternalError::InternalError(const char *message, const char *expr, const char *file, int line)
111*35238bceSAndroid Build Coastguard Worker : TestException(message, expr, file, line, QP_TEST_RESULT_INTERNAL_ERROR)
112*35238bceSAndroid Build Coastguard Worker {
113*35238bceSAndroid Build Coastguard Worker }
114*35238bceSAndroid Build Coastguard Worker
InternalError(const std::string & message,const char * expr,const char * file,int line)115*35238bceSAndroid Build Coastguard Worker InternalError::InternalError(const std::string &message, const char *expr, const char *file, int line)
116*35238bceSAndroid Build Coastguard Worker : TestException(message.c_str(), expr, file, line, QP_TEST_RESULT_INTERNAL_ERROR)
117*35238bceSAndroid Build Coastguard Worker {
118*35238bceSAndroid Build Coastguard Worker }
119*35238bceSAndroid Build Coastguard Worker
InternalError(const std::string & message)120*35238bceSAndroid Build Coastguard Worker InternalError::InternalError(const std::string &message) : TestException(message, QP_TEST_RESULT_INTERNAL_ERROR)
121*35238bceSAndroid Build Coastguard Worker {
122*35238bceSAndroid Build Coastguard Worker }
123*35238bceSAndroid Build Coastguard Worker
ResourceError(const char * message,const char * expr,const char * file,int line)124*35238bceSAndroid Build Coastguard Worker ResourceError::ResourceError(const char *message, const char *expr, const char *file, int line)
125*35238bceSAndroid Build Coastguard Worker : TestException(message, expr, file, line, QP_TEST_RESULT_RESOURCE_ERROR)
126*35238bceSAndroid Build Coastguard Worker {
127*35238bceSAndroid Build Coastguard Worker }
128*35238bceSAndroid Build Coastguard Worker
ResourceError(const std::string & message)129*35238bceSAndroid Build Coastguard Worker ResourceError::ResourceError(const std::string &message) : TestException(message, QP_TEST_RESULT_RESOURCE_ERROR)
130*35238bceSAndroid Build Coastguard Worker {
131*35238bceSAndroid Build Coastguard Worker }
132*35238bceSAndroid Build Coastguard Worker
NotSupportedError(const char * message,const char * expr,const char * file,int line)133*35238bceSAndroid Build Coastguard Worker NotSupportedError::NotSupportedError(const char *message, const char *expr, const char *file, int line)
134*35238bceSAndroid Build Coastguard Worker : TestException(message, expr, file, line, QP_TEST_RESULT_NOT_SUPPORTED)
135*35238bceSAndroid Build Coastguard Worker {
136*35238bceSAndroid Build Coastguard Worker }
137*35238bceSAndroid Build Coastguard Worker
NotSupportedError(const std::string & message,const char * expr,const char * file,int line)138*35238bceSAndroid Build Coastguard Worker NotSupportedError::NotSupportedError(const std::string &message, const char *expr, const char *file, int line)
139*35238bceSAndroid Build Coastguard Worker : TestException(message.c_str(), expr, file, line, QP_TEST_RESULT_NOT_SUPPORTED)
140*35238bceSAndroid Build Coastguard Worker {
141*35238bceSAndroid Build Coastguard Worker }
142*35238bceSAndroid Build Coastguard Worker
NotSupportedError(const std::string & message)143*35238bceSAndroid Build Coastguard Worker NotSupportedError::NotSupportedError(const std::string &message) : TestException(message, QP_TEST_RESULT_NOT_SUPPORTED)
144*35238bceSAndroid Build Coastguard Worker {
145*35238bceSAndroid Build Coastguard Worker }
146*35238bceSAndroid Build Coastguard Worker
QualityWarning(const char * message,const char * expr,const char * file,int line)147*35238bceSAndroid Build Coastguard Worker QualityWarning::QualityWarning(const char *message, const char *expr, const char *file, int line)
148*35238bceSAndroid Build Coastguard Worker : TestException(message, expr, file, line, QP_TEST_RESULT_QUALITY_WARNING)
149*35238bceSAndroid Build Coastguard Worker {
150*35238bceSAndroid Build Coastguard Worker }
151*35238bceSAndroid Build Coastguard Worker
QualityWarning(const std::string & message,const char * expr,const char * file,int line)152*35238bceSAndroid Build Coastguard Worker QualityWarning::QualityWarning(const std::string &message, const char *expr, const char *file, int line)
153*35238bceSAndroid Build Coastguard Worker : TestException(message.c_str(), expr, file, line, QP_TEST_RESULT_QUALITY_WARNING)
154*35238bceSAndroid Build Coastguard Worker {
155*35238bceSAndroid Build Coastguard Worker }
156*35238bceSAndroid Build Coastguard Worker
QualityWarning(const std::string & message)157*35238bceSAndroid Build Coastguard Worker QualityWarning::QualityWarning(const std::string &message) : TestException(message, QP_TEST_RESULT_QUALITY_WARNING)
158*35238bceSAndroid Build Coastguard Worker {
159*35238bceSAndroid Build Coastguard Worker }
160*35238bceSAndroid Build Coastguard Worker
161*35238bceSAndroid Build Coastguard Worker } // namespace tcu
162