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} 927c2d65d752a8afa1b4ed5aae21e7f7ed9aeffab3Boris ZaninTestError::TestError (const std::string& message, const char* expr, const char* file, int line) 937c2d65d752a8afa1b4ed5aae21e7f7ed9aeffab3Boris Zanin : TestException(message.c_str(), expr, file, line, QP_TEST_RESULT_FAIL) 947c2d65d752a8afa1b4ed5aae21e7f7ed9aeffab3Boris Zanin{ 957c2d65d752a8afa1b4ed5aae21e7f7ed9aeffab3Boris Zanin} 963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 973c827367444ee418f129b2c238299f49d3264554Jarkko PoyryTestError::TestError (const std::string& message) 989296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, QP_TEST_RESULT_FAIL) 993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1023c827367444ee418f129b2c238299f49d3264554Jarkko PoyryInternalError::InternalError (const char* message, const char* expr, const char* file, int line) 1039296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, expr, file, line, QP_TEST_RESULT_INTERNAL_ERROR) 1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1073c827367444ee418f129b2c238299f49d3264554Jarkko PoyryInternalError::InternalError (const std::string& message) 1089296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, QP_TEST_RESULT_INTERNAL_ERROR) 1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1123c827367444ee418f129b2c238299f49d3264554Jarkko PoyryResourceError::ResourceError (const char* message, const char* expr, const char* file, int line) 1139296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, expr, file, line, QP_TEST_RESULT_RESOURCE_ERROR) 1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1173c827367444ee418f129b2c238299f49d3264554Jarkko PoyryResourceError::ResourceError (const std::string& message) 1189296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, QP_TEST_RESULT_RESOURCE_ERROR) 1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1223c827367444ee418f129b2c238299f49d3264554Jarkko PoyryNotSupportedError::NotSupportedError (const char* message, const char* expr, const char* file, int line) 1239296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, expr, file, line, QP_TEST_RESULT_NOT_SUPPORTED) 1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1273c827367444ee418f129b2c238299f49d3264554Jarkko PoyryNotSupportedError::NotSupportedError (const std::string& message) 1289296957fdb746e7558a00fec7f9a519f092168d8Jarkko Pöyry : TestException(message, QP_TEST_RESULT_NOT_SUPPORTED) 1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // namespace tcu 133