mirror of
https://github.com/pocoproject/poco.git
synced 2025-05-30 15:56:02 +02:00
gcc/linux compile/tests
This commit is contained in:
parent
f70ac1ca07
commit
8f747fabdc
@ -103,7 +103,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
virtual void runTest();
|
virtual void runTest();
|
||||||
TestResult* defaultResult();
|
TestResult* defaultResult();
|
||||||
|
|
||||||
void assertImplementation(bool condition,
|
void assertImplementation(bool condition,
|
||||||
const std::string& conditionExpression = "",
|
const std::string& conditionExpression = "",
|
||||||
long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
|
long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
|
||||||
@ -158,10 +158,15 @@ protected:
|
|||||||
long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
|
long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
|
||||||
const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
|
const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
|
||||||
|
|
||||||
void fail(const std::string&message = "",
|
void fail(const std::string& message = "",
|
||||||
long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
|
long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
|
||||||
const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
|
const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
|
||||||
|
|
||||||
|
void warn(const std::string& message = "",
|
||||||
|
long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
|
||||||
|
const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const std::string _name;
|
const std::string _name;
|
||||||
};
|
};
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include "CppUnit/TestResult.h"
|
#include "CppUnit/TestResult.h"
|
||||||
#include "CppUnit/estring.h"
|
#include "CppUnit/estring.h"
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@ -94,12 +95,18 @@ void TestCase::assertNull(const void* pointer, const std::string& pointerExpress
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TestCase::fail (const std::string& message, long lineNumber, const std::string& fileName)
|
void TestCase::fail(const std::string& message, long lineNumber, const std::string& fileName)
|
||||||
{
|
{
|
||||||
throw CppUnitException(std::string("fail: ") + message, lineNumber, fileName);
|
throw CppUnitException(std::string("fail: ") + message, lineNumber, fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TestCase::warn(const std::string& message, long lineNumber, const std::string& fileName)
|
||||||
|
{
|
||||||
|
std::cout << "Warning [" << fileName << ':' << lineNumber << "]: " << message << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Run the test and catch any exceptions that are triggered by it
|
// Run the test and catch any exceptions that are triggered by it
|
||||||
void TestCase::run(TestResult *result)
|
void TestCase::run(TestResult *result)
|
||||||
{
|
{
|
||||||
|
@ -50,11 +50,36 @@
|
|||||||
#endif
|
#endif
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
#include <locale>
|
||||||
|
|
||||||
|
|
||||||
namespace Poco {
|
namespace Poco {
|
||||||
|
|
||||||
|
|
||||||
|
inline char decimalSeparator()
|
||||||
|
/// Returns decimal separator from global locale or
|
||||||
|
/// default '.' for platforms where locale is unavailable.
|
||||||
|
{
|
||||||
|
#if !defined(POCO_NO_LOCALE)
|
||||||
|
return std::use_facet<std::numpunct<char> >(std::locale()).decimal_point();
|
||||||
|
#else
|
||||||
|
return '.';
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline char thousandSeparator()
|
||||||
|
/// Returns thousand separator from global locale or
|
||||||
|
/// default ',' for platforms where locale is unavailable.
|
||||||
|
{
|
||||||
|
#if !defined(POCO_NO_LOCALE)
|
||||||
|
return std::use_facet<std::numpunct<char> >(std::locale()).thousands_sep();
|
||||||
|
#else
|
||||||
|
return ',';
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template <typename I>
|
template <typename I>
|
||||||
bool strToInt(const char* pStr, I& result, short base = -1)
|
bool strToInt(const char* pStr, I& result, short base = -1)
|
||||||
/// Converts zero-terminated array to integer number;
|
/// Converts zero-terminated array to integer number;
|
||||||
@ -71,7 +96,7 @@ bool strToInt(const char* pStr, I& result, short base = -1)
|
|||||||
if (!pStr || (pStr && *pStr == '\0')) return false;
|
if (!pStr || (pStr && *pStr == '\0')) return false;
|
||||||
while ((*pStr != '\0') && (*pStr == ' ')) ++pStr;
|
while ((*pStr != '\0') && (*pStr == ' ')) ++pStr;
|
||||||
if (*pStr == '\0') return false;
|
if (*pStr == '\0') return false;
|
||||||
|
|
||||||
char sign = 1;
|
char sign = 1;
|
||||||
|
|
||||||
if (*pStr == '-')
|
if (*pStr == '-')
|
||||||
@ -92,7 +117,7 @@ bool strToInt(const char* pStr, I& result, short base = -1)
|
|||||||
result = 0;
|
result = 0;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((*pStr == 'x') || (*pStr == 'X'))
|
if ((*pStr == 'x') || (*pStr == 'X'))
|
||||||
{
|
{
|
||||||
base = 0x10;
|
base = 0x10;
|
||||||
@ -129,7 +154,7 @@ bool strToInt(const char* pStr, I& result, short base = -1)
|
|||||||
}
|
}
|
||||||
else return false;
|
else return false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '8': case '9':
|
case '8': case '9':
|
||||||
if (allowDigits && (base == 10 || base == 16))
|
if (allowDigits && (base == 10 || base == 16))
|
||||||
{
|
{
|
||||||
@ -199,30 +224,6 @@ bool strToInt(const std::string& str, I& result, short base = -1)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline char decimalSeparator()
|
|
||||||
/// Returns decimal separator from global locale or
|
|
||||||
/// default '.' for platforms where locale is unavailable.
|
|
||||||
{
|
|
||||||
#if !defined(POCO_NO_LOCALE)
|
|
||||||
return std::use_facet<std::numpunct<char> >(std::locale()).decimal_point();
|
|
||||||
#else
|
|
||||||
return '.';
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline char thousandSeparator()
|
|
||||||
/// Returns thousand separator from global locale or
|
|
||||||
/// default ',' for platforms where locale is unavailable.
|
|
||||||
{
|
|
||||||
#if !defined(POCO_NO_LOCALE)
|
|
||||||
return std::use_facet<std::numpunct<char> >(std::locale()).thousands_sep();
|
|
||||||
#else
|
|
||||||
return ',';
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef POCO_NO_FPENVIRONMENT
|
#ifndef POCO_NO_FPENVIRONMENT
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include "Poco/Stopwatch.h"
|
#include "Poco/Stopwatch.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
|
|
||||||
using Poco::NumberParser;
|
using Poco::NumberParser;
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include "Poco/Stopwatch.h"
|
#include "Poco/Stopwatch.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
|
|
||||||
using Poco::trimLeft;
|
using Poco::trimLeft;
|
||||||
@ -527,39 +528,44 @@ void StringTest::testStringToFloatError()
|
|||||||
void StringTest::testNumericLocale()
|
void StringTest::testNumericLocale()
|
||||||
{
|
{
|
||||||
#if !defined(POCO_NO_LOCALE)
|
#if !defined(POCO_NO_LOCALE)
|
||||||
char dp = decimalSeparator();
|
try
|
||||||
char ts = thousandSeparator();
|
{
|
||||||
std::locale loc;
|
char dp = decimalSeparator();
|
||||||
std::cout << "Original locale: '" << loc.c_str() << '\'' << std::endl;
|
char ts = thousandSeparator();
|
||||||
std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl;
|
std::locale loc;
|
||||||
std::cout << "Thousand separator: '" << ts << '\'' << std::endl;
|
std::cout << "Original locale: '" << loc.name() << '\'' << std::endl;
|
||||||
|
std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl;
|
||||||
|
std::cout << "Thousand separator: '" << ts << '\'' << std::endl;
|
||||||
|
|
||||||
std::locale::global(std::locale("German"));
|
std::locale::global(std::locale("German"));
|
||||||
std::locale locGerman;
|
std::locale locGerman;
|
||||||
assert (',' == decimalSeparator());
|
assert (',' == decimalSeparator());
|
||||||
assert ('.' == thousandSeparator());
|
assert ('.' == thousandSeparator());
|
||||||
std::cout << "New locale: '" << locGerman.c_str() << '\'' << std::endl;
|
std::cout << "New locale: '" << locGerman.name() << '\'' << std::endl;
|
||||||
std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl;
|
std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl;
|
||||||
std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl;
|
std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl;
|
||||||
|
|
||||||
std::locale::global(std::locale("US"));
|
std::locale::global(std::locale("US"));
|
||||||
std::locale locUS;
|
std::locale locUS;
|
||||||
assert ('.' == decimalSeparator());
|
assert ('.' == decimalSeparator());
|
||||||
assert (',' == thousandSeparator());
|
assert (',' == thousandSeparator());
|
||||||
std::cout << "New locale: '" << locUS.c_str() << '\'' << std::endl;
|
std::cout << "New locale: '" << locUS.name() << '\'' << std::endl;
|
||||||
std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl;
|
std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl;
|
||||||
std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl;
|
std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl;
|
||||||
|
|
||||||
std::locale::global(loc);
|
std::locale::global(loc);
|
||||||
dp = decimalSeparator();
|
dp = decimalSeparator();
|
||||||
ts = thousandSeparator();
|
ts = thousandSeparator();
|
||||||
std::cout << "Final locale: '" << loc.c_str() << '\'' << std::endl;
|
std::cout << "Final locale: '" << loc.name() << '\'' << std::endl;
|
||||||
std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl;
|
std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl;
|
||||||
std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl;
|
std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl;
|
||||||
assert (dp == decimalSeparator());
|
assert (dp == decimalSeparator());
|
||||||
assert (ts == thousandSeparator());
|
assert (ts == thousandSeparator());
|
||||||
#else
|
} catch (std::runtime_error& ex)
|
||||||
std::cout << "No locale available, skipping." << std::endl;
|
{
|
||||||
|
std::cout << ex.what() << std::endl;
|
||||||
|
warn ("Locale not found, skipping test");
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user