13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program Tester Core 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * ---------------------------------------- 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Basic definitions. 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuDefs.hpp" 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "deFilePath.hpp" 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "qpDebugOut.h" 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <sstream> 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <stdarg.h> 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace tcu 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid die (const char* format, ...) 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry va_list args; 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry va_start(args, format); 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry qpDiev(format, args); 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry va_end(args); 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid print (const char* format, ...) 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry va_list args; 453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry va_start(args, format); 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry qpPrintv(format, args); 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry va_end(args); 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystatic std::string formatError (const char* message, const char* expr, const char* file, int line) 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry std::ostringstream msg; 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry msg << (message ? message : "Runtime check failed"); 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (expr) 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry msg << ": '" << expr << '\''; 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (file) 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry msg << " at " << de::FilePath(file).getBaseName() << ":" << line; 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return msg.str(); 623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 643c827367444ee418f129b2c238299f49d3264554Jarkko PoyryException::Exception (const char* message, const char* expr, const char* file, int line) 653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : std::runtime_error(formatError(message, expr, file, line)) 663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , m_message (message ? message : "Runtime check failed") 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 703c827367444ee418f129b2c238299f49d3264554Jarkko PoyryException::Exception (const std::string& message) 713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : std::runtime_error(message) 723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , m_message (message) 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 769296957fdb746e7558a00fec7f9a519f092168d8Jarkko PöyryTestException::TestException (const char* message, const char* expr, const char* file, int line, qpTestResult result) 779296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : Exception (formatError(message, expr, file, line)) 789296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry , m_result (result) 799296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry{ 809296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry} 819296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry 829296957fdb746e7558a00fec7f9a519f092168d8Jarkko PöyryTestException::TestException (const std::string& message, qpTestResult result) 839296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : Exception (message) 849296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry , m_result (result) 859296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry{ 869296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry} 879296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry 883c827367444ee418f129b2c238299f49d3264554Jarkko PoyryTestError::TestError (const char* message, const char* expr, const char* file, int line) 899296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, expr, file, line, QP_TEST_RESULT_FAIL) 903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 933c827367444ee418f129b2c238299f49d3264554Jarkko PoyryTestError::TestError (const std::string& message) 949296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, QP_TEST_RESULT_FAIL) 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 983c827367444ee418f129b2c238299f49d3264554Jarkko PoyryInternalError::InternalError (const char* message, const char* expr, const char* file, int line) 999296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, expr, file, line, QP_TEST_RESULT_INTERNAL_ERROR) 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1033c827367444ee418f129b2c238299f49d3264554Jarkko PoyryInternalError::InternalError (const std::string& message) 1049296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, QP_TEST_RESULT_INTERNAL_ERROR) 1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1083c827367444ee418f129b2c238299f49d3264554Jarkko PoyryResourceError::ResourceError (const char* message, const char* expr, const char* file, int line) 1099296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, expr, file, line, QP_TEST_RESULT_RESOURCE_ERROR) 1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1133c827367444ee418f129b2c238299f49d3264554Jarkko PoyryResourceError::ResourceError (const std::string& message) 1149296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, QP_TEST_RESULT_RESOURCE_ERROR) 1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1183c827367444ee418f129b2c238299f49d3264554Jarkko PoyryNotSupportedError::NotSupportedError (const char* message, const char* expr, const char* file, int line) 1199296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, expr, file, line, QP_TEST_RESULT_NOT_SUPPORTED) 1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1233c827367444ee418f129b2c238299f49d3264554Jarkko PoyryNotSupportedError::NotSupportedError (const std::string& message) 1249296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, QP_TEST_RESULT_NOT_SUPPORTED) 1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // namespace tcu 129