You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-dev@logging.apache.org by ca...@apache.org on 2007/12/21 03:52:42 UTC
svn commit: r606089 [6/6] - in /logging/log4cxx/trunk: ./ src/examples/cpp/
src/main/cpp/ src/main/include/log4cxx/ src/main/include/log4cxx/db/
src/main/include/log4cxx/filter/ src/main/include/log4cxx/helpers/
src/main/include/log4cxx/net/ src/main/i...
Modified: logging/log4cxx/trunk/src/main/include/log4cxx/xml/domconfigurator.h
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/include/log4cxx/xml/domconfigurator.h?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/include/log4cxx/xml/domconfigurator.h (original)
+++ logging/log4cxx/trunk/src/main/include/log4cxx/xml/domconfigurator.h Thu Dec 20 18:52:29 2007
@@ -247,9 +247,15 @@
A static version of #doConfigure.
*/
static void configure(const std::string& filename);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
static void configure(const std::wstring& filename);
#endif
+#if LOG4CXX_UNICHAR_API
+ static void configure(const std::basic_string<UniChar>& filename);
+#endif
+#if LOG4CXX_CFSTRING_API
+ static void configure(const CFStringRef& filename);
+#endif
/**
Like #configureAndWatch(const String& configFilename, long delay)
except that the default delay as defined by
@@ -257,9 +263,15 @@
@param configFilename A log4j configuration file in XML format.
*/
static void configureAndWatch(const std::string& configFilename);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
static void configureAndWatch(const std::wstring& configFilename);
#endif
+#if LOG4CXX_UNICHAR_API
+ static void configureAndWatch(const std::basic_string<UniChar>& configFilename);
+#endif
+#if LOG4CXX_CFSTRING_API
+ static void configureAndWatch(const CFStringRef& configFilename);
+#endif
/**
Read the configuration file <code>configFilename</code> if it
exists. Moreover, a thread will be created that will periodically
@@ -273,8 +285,16 @@
*/
static void configureAndWatch(const std::string& configFilename,
long delay);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
static void configureAndWatch(const std::wstring& configFilename,
+ long delay);
+#endif
+#if LOG4CXX_UNICHAR_API
+ static void configureAndWatch(const std::basic_string<UniChar>& configFilename,
+ long delay);
+#endif
+#if LOG4CXX_CFSTRING_API
+ static void configureAndWatch(const CFStringRef& configFilename,
long delay);
#endif
Modified: logging/log4cxx/trunk/src/performance/cpp/main.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/performance/cpp/main.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/performance/cpp/main.cpp (original)
+++ logging/log4cxx/trunk/src/performance/cpp/main.cpp Thu Dec 20 18:52:29 2007
@@ -105,7 +105,7 @@
loop = Loop::loopStream;
} else if (args[2] == LOG4CXX_STR("bad-stream")) {
loop = Loop::loopBadStream;
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
} else if (args[2] == LOG4CXX_STR("wide")) {
loop = Loop::loopWide;
} else if (args[2] == LOG4CXX_STR("wide-stream")) {
@@ -128,7 +128,7 @@
return (apr_time_now() - before) / 1000;
}
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
static long loopWide(long len, LoggerPtr& logger1) {
const wchar_t* msg = L"Some fix message of medium length.";
apr_time_t before = apr_time_now();
@@ -149,7 +149,7 @@
return (apr_time_now() - before) / 1000;
}
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
static long loopWideStream(long len, LoggerPtr& logger1) {
const wchar_t* msg = L"Some fix message of medium length.";
apr_time_t before = apr_time_now();
@@ -171,7 +171,7 @@
return (apr_time_now() - before) / 1000;
}
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
static long loopBadWideStream(long len, LoggerPtr& logger1) {
const wchar_t* msg = L"Some fix message of medium length.";
apr_time_t before = apr_time_now();
Modified: logging/log4cxx/trunk/src/test/cpp/Makefile.am
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/Makefile.am?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/Makefile.am (original)
+++ logging/log4cxx/trunk/src/test/cpp/Makefile.am Thu Dec 20 18:52:29 2007
@@ -56,8 +56,7 @@
helpers/stringhelpertestcase.cpp \
helpers/syslogwritertest.cpp \
helpers/timezonetestcase.cpp \
- helpers/transcodertestcase.cpp \
- helpers/unicodehelpertestcase.cpp
+ helpers/transcodertestcase.cpp
net_tests = \
net/smtpappendertestcase.cpp \
Modified: logging/log4cxx/trunk/src/test/cpp/asyncappendertestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/asyncappendertestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/asyncappendertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/asyncappendertestcase.cpp Thu Dec 20 18:52:29 2007
@@ -47,7 +47,7 @@
* @{inheritDoc}
*/
void append(const spi::LoggingEventPtr&, log4cxx::helpers::Pool&) {
- throw NullPointerException("Intentional NullPointerException");
+ throw NullPointerException(LOG4CXX_STR("Intentional NullPointerException"));
}
void close() {
@@ -81,7 +81,7 @@
// if fatal, echo messages for testLoggingInDispatcher
//
if (event->getLevel() == Level::getInfo()) {
- LoggerPtr logger = Logger::getLogger(event->getLoggerName());
+ LoggerPtr logger = Logger::getLoggerLS(event->getLoggerName());
LOG4CXX_LOGLS(logger, Level::getError(), event->getMessage());
LOG4CXX_LOGLS(logger, Level::getWarn(), event->getMessage());
LOG4CXX_LOGLS(logger, Level::getInfo(), event->getMessage());
Modified: logging/log4cxx/trunk/src/test/cpp/customlogger/xlogger.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/customlogger/xlogger.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/customlogger/xlogger.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/customlogger/xlogger.cpp Thu Dec 20 18:52:29 2007
@@ -37,9 +37,9 @@
return;
}
- if (XLevel::LETHAL->isGreaterOrEqual(this->getEffectiveLevel()))
+ if (XLevel::getLethal()->isGreaterOrEqual(this->getEffectiveLevel()))
{
- forcedLog(XLevel::LETHAL, message, locationInfo);
+ forcedLog(XLevel::getLethal(), message, locationInfo);
}
}
@@ -50,9 +50,9 @@
return;
}
- if (XLevel::LETHAL->isGreaterOrEqual(this->getEffectiveLevel()))
+ if (XLevel::getLethal()->isGreaterOrEqual(this->getEffectiveLevel()))
{
- forcedLog(XLevel::LETHAL, message, LocationInfo::getLocationUnavailable());
+ forcedLog(XLevel::getLethal(), message, LocationInfo::getLocationUnavailable());
}
}
@@ -73,9 +73,9 @@
return;
}
- if (XLevel::TRACE->isGreaterOrEqual(this->getEffectiveLevel()))
+ if (XLevel::getTrace()->isGreaterOrEqual(this->getEffectiveLevel()))
{
- forcedLog(XLevel::TRACE, message, locationInfo);
+ forcedLog(XLevel::getTrace(), message, locationInfo);
}
}
@@ -86,9 +86,9 @@
return;
}
- if (XLevel::TRACE->isGreaterOrEqual(this->getEffectiveLevel()))
+ if (XLevel::getTrace()->isGreaterOrEqual(this->getEffectiveLevel()))
{
- forcedLog(XLevel::TRACE, message, LocationInfo::getLocationUnavailable());
+ forcedLog(XLevel::getTrace(), message, LocationInfo::getLocationUnavailable());
}
}
Modified: logging/log4cxx/trunk/src/test/cpp/customlogger/xloggertestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/customlogger/xloggertestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/customlogger/xloggertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/customlogger/xloggertestcase.cpp Thu Dec 20 18:52:29 2007
@@ -70,8 +70,8 @@
int i = -1;
std::ostringstream os;
os << "Message " << ++i;
- if (logger->isEnabledFor(log4cxx::XLevel::TRACE)) {
- logger->forcedLog(log4cxx::XLevel::TRACE, os.str(), LOG4CXX_LOCATION);
+ if (logger->isEnabledFor(log4cxx::XLevel::getTrace())) {
+ logger->forcedLog(log4cxx::XLevel::getTrace(), os.str(), LOG4CXX_LOCATION);
}
os.str("");
Modified: logging/log4cxx/trunk/src/test/cpp/encodingtest.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/encodingtest.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/encodingtest.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/encodingtest.cpp Thu Dec 20 18:52:29 2007
@@ -25,7 +25,7 @@
// If there is no support for wchar_t logging then
// there is not a consistent way to get the test characters logged
//
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
#include <log4cxx/patternlayout.h>
@@ -131,7 +131,7 @@
*/
private:
void configure(LoggerPtr& logger,
- const logchar* filename, const logchar* encoding) {
+ const LogString& filename, const LogString& encoding) {
PatternLayoutPtr layout(new PatternLayout());
layout->setConversionPattern(LOG4CXX_STR("%p - %m\n"));
Pool p;
Modified: logging/log4cxx/trunk/src/test/cpp/filetestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/filetestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/filetestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/filetestcase.cpp Thu Dec 20 18:52:29 2007
@@ -28,6 +28,10 @@
#include <log4cxx/helpers/inputstreamreader.h>
#include <log4cxx/helpers/fileinputstream.h>
+#if LOG4CXX_CFSTRING_API
+#include <CoreFoundation/CFString.h>
+#endif
+
using namespace log4cxx;
using namespace log4cxx::helpers;
@@ -41,9 +45,15 @@
CPPUNIT_TEST(propertyRead);
CPPUNIT_TEST(propertyExists);
CPPUNIT_TEST(fileWrite1);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
CPPUNIT_TEST(wcharConstructor);
#endif
+#if LOG4CXX_UNICHAR_API
+ CPPUNIT_TEST(unicharConstructor);
+#endif
+#if LOG4CXX_CFSTRING_API
+ CPPUNIT_TEST(cfstringConstructor);
+#endif
CPPUNIT_TEST(copyConstructor);
CPPUNIT_TEST(assignment);
CPPUNIT_TEST(deleteBackslashedFileName);
@@ -79,7 +89,7 @@
}
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
void wcharConstructor() {
File propFile(L"input/patternLayout1.properties");
Pool pool;
@@ -88,6 +98,27 @@
}
#endif
+#if LOG4CXX_UNICHAR_API
+ void unicharConstructor() {
+ const UniChar filename[] = { 'i', 'n', 'p', 'u', 't', '/',
+ 'p', 'a', 't', 't', 'e', 'r', 'n', 'L', 'a', 'y', 'o', 'u', 't', '1', '.',
+ 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', 0 };
+ File propFile(filename);
+ Pool pool;
+ bool exists = propFile.exists(pool);
+ CPPUNIT_ASSERT_EQUAL(true, exists);
+ }
+#endif
+
+#if LOG4CXX_CFSTRING_API
+ void cfstringConstructor() {
+ File propFile(CFSTR("input/patternLayout.properties"));
+ Pool pool;
+ bool exists = propFile.exists(pool);
+ CPPUNIT_ASSERT_EQUAL(true, exists);
+ }
+#endif
+
void copyConstructor() {
File propFile("input/patternLayout1.properties");
File copy(propFile);
@@ -127,7 +158,8 @@
OutputStreamWriterPtr osw = new OutputStreamWriter(fos);
Pool pool;
- LogString greeting(LOG4CXX_STR("Hello, World") LOG4CXX_EOL);
+ LogString greeting(LOG4CXX_STR("Hello, World"));
+ greeting.append(LOG4CXX_EOL);
osw->write(greeting, pool);
InputStreamPtr is =
Modified: logging/log4cxx/trunk/src/test/cpp/helpers/cacheddateformattestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/helpers/cacheddateformattestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/helpers/cacheddateformattestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/helpers/cacheddateformattestcase.cpp Thu Dec 20 18:52:29 2007
@@ -30,11 +30,10 @@
using namespace log4cxx::helpers;
using namespace log4cxx::pattern;
+#define LOCALE_US "C"
#if defined(_WIN32)
-#define LOCALE_US "English_us"
#define LOCALE_JP "Japanese_japan"
#else
-#define LOCALE_US "en_US"
#define LOCALE_JP "ja_JP"
#endif
@@ -354,7 +353,7 @@
*/
void test10() {
#if LOG4CXX_HAS_STD_LOCALE
- std::locale loco(LOCALE_US);
+ std::locale loco("C");
std::locale* localeUS = &loco;
#else
std::locale* localeUS = NULL;
Modified: logging/log4cxx/trunk/src/test/cpp/helpers/charsetdecodertestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/helpers/charsetdecodertestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/helpers/charsetdecodertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/helpers/charsetdecodertestcase.cpp Thu Dec 20 18:52:29 2007
@@ -35,11 +35,6 @@
CPPUNIT_TEST_SUITE(CharsetDecoderTestCase);
CPPUNIT_TEST(decode1);
CPPUNIT_TEST(decode2);
-#if LOG4CXX_HAS_WCHAR_T
- CPPUNIT_TEST(decode5);
- CPPUNIT_TEST(decode6);
- CPPUNIT_TEST(decode7);
-#endif
CPPUNIT_TEST(decode8);
CPPUNIT_TEST_SUITE_END();
@@ -93,85 +88,6 @@
-#if LOG4CXX_HAS_WCHAR_T
- void decode5() {
- wchar_t buf[] = L"Hello, World";
- ByteBuffer src((char*) buf, wcslen(buf) * sizeof(wchar_t));
-
- CharsetDecoderPtr dec(CharsetDecoder::getWideDecoder());
-
- LogString greeting;
- log4cxx_status_t stat = dec->decode(src, greeting);
- CPPUNIT_ASSERT_EQUAL(APR_SUCCESS, stat);
-
- stat = dec->decode(src, greeting);
- CPPUNIT_ASSERT_EQUAL(APR_SUCCESS, stat);
-
- CPPUNIT_ASSERT_EQUAL((LogString) LOG4CXX_STR("Hello, World"), greeting);
- }
-
- void decode6() {
- wchar_t buf[BUFSIZE + 6];
- for(int i = 0; i < BUFSIZE; i++) {
- buf[i] = L'A';
- }
- buf[BUFSIZE - 3] = 0;
-#if defined(__STDC_LIB_EXT1__) || defined(__STDC_SECURE_LIB__)
- wcscat_s(buf, (sizeof buf)/sizeof(wchar_t), L"Hello");
-#else
- wcscat(buf, L"Hello");
-#endif
- ByteBuffer src((char*) buf, wcslen(buf) * sizeof(wchar_t));
-
- CharsetDecoderPtr dec(CharsetDecoder::getWideDecoder());
-
- LogString greeting;
- log4cxx_status_t stat = dec->decode(src, greeting);
- CPPUNIT_ASSERT_EQUAL(APR_SUCCESS, stat);
- CPPUNIT_ASSERT_EQUAL((size_t) 0, src.remaining());
-
-
- stat = dec->decode(src, greeting);
- CPPUNIT_ASSERT_EQUAL(APR_SUCCESS, stat);
-
- LogString manyAs(BUFSIZE - 3, LOG4CXX_STR('A'));
- CPPUNIT_ASSERT_EQUAL(manyAs, greeting.substr(0, BUFSIZE - 3));
- CPPUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("Hello")), greeting.substr(BUFSIZE - 3));
- }
-
- void decode7() {
- // arbitrary, hopefully meaningless, characters from
- // Latin, Arabic, Armenian, Bengali, CJK and Cyrillic
- const wchar_t wide_greet[] = { L'A', 0x0605, 0x0530, 0x986, 0x4E03, 0x400, 0 };
-#if LOG4CXX_LOGCHAR_IS_WCHAR
- const logchar* greet = wide_greet;
-#endif
-
-#if LOG4CXX_LOGCHAR_IS_UTF8
- const logchar greet[] = { 'A',
- (char) 0xD8, (char) 0x85,
- (char) 0xD4, (char) 0xB0,
- (char) 0xE0, (char) 0xA6, (char) 0x86,
- (char) 0xE4, (char) 0xB8, (char) 0x83,
- (char) 0xD0, (char) 0x80,
- 0 };
-
-#endif
- ByteBuffer src((char*) wide_greet, wcslen(wide_greet) * sizeof(wchar_t));
-
- CharsetDecoderPtr dec(CharsetDecoder::getWideDecoder());
-
- LogString greeting;
- log4cxx_status_t stat = dec->decode(src, greeting);
- CPPUNIT_ASSERT_EQUAL(false, CharsetDecoder::isError(stat));
- stat = dec->decode(src, greeting);
- CPPUNIT_ASSERT_EQUAL(false, CharsetDecoder::isError(stat));
-
- CPPUNIT_ASSERT_EQUAL((LogString) greet, greeting);
- }
-
-#endif
-
void decode8() {
char buf[] = { 'H', 'e', 'l', 'l', 'o', ',', 0, 'W', 'o', 'r', 'l', 'd'};
ByteBuffer src(buf, 12);
@@ -185,8 +101,8 @@
CPPUNIT_ASSERT_EQUAL(APR_SUCCESS, stat);
CPPUNIT_ASSERT_EQUAL((size_t) 12, src.position());
- LogString expected(LOG4CXX_STR("Hello,\0World"), 12);
- CPPUNIT_ASSERT_EQUAL(expected, greeting);
+ const logchar expected[] = { 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x2C, 0x00, 0x57, 0x6F, 0x72, 0x6C, 0x64 };
+ CPPUNIT_ASSERT_EQUAL(LogString(expected, 12), greeting);
}
Modified: logging/log4cxx/trunk/src/test/cpp/helpers/charsetencodertestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/helpers/charsetencodertestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/helpers/charsetencodertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/helpers/charsetencodertestcase.cpp Thu Dec 20 18:52:29 2007
@@ -105,7 +105,7 @@
void encode3() {
-#if LOG4CXX_LOGCHAR_IS_WCHAR
+#if LOG4CXX_LOGCHAR_IS_WCHAR || LOG4CXX_LOGCHAR_IS_UNICHAR
// arbitrary, hopefully meaningless, characters from
// Latin, Arabic, Armenian, Bengali, CJK and Cyrillic
const logchar greet[] = { L'A', 0x0605, 0x0530, 0x986, 0x4E03, 0x400, 0 };
@@ -145,7 +145,7 @@
(char) 0xE4, (char) 0xB8, (char) 0x83,
(char) 0xD0, (char) 0x80,
0 };
-#if LOG4CXX_LOGCHAR_IS_WCHAR
+#if LOG4CXX_LOGCHAR_IS_WCHAR || LOG4CXX_LOGCHAR_IS_UNICHAR
// arbitrary, hopefully meaningless, characters from
// Latin, Arabic, Armenian, Bengali, CJK and Cyrillic
const logchar greet[] = { L'A', 0x0605, 0x0530, 0x986, 0x4E03, 0x400, 0 };
@@ -236,7 +236,7 @@
(char) 0xc3, (char) 0xb4, // latin small letter o with circumflex
0 };
#endif
-#if LOG4CXX_LOGCHAR_IS_WCHAR
+#if LOG4CXX_LOGCHAR_IS_WCHAR || LOG4CXX_LOGCHAR_IS_UNICHAR
// arbitrary, hopefully meaningless, characters from
// Latin, Arabic, Armenian, Bengali, CJK and Cyrillic
const logchar greet[] = { L'H', L'e', L'l', L'l', L'o', L' ',
Modified: logging/log4cxx/trunk/src/test/cpp/helpers/datetimedateformattestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/helpers/datetimedateformattestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/helpers/datetimedateformattestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/helpers/datetimedateformattestcase.cpp Thu Dec 20 18:52:29 2007
@@ -29,11 +29,10 @@
using namespace log4cxx::helpers;
using namespace std;
+#define LOCALE_US "C"
#if defined(_WIN32)
-#define LOCALE_US "English_us"
#define LOCALE_FR "French_france"
#else
-#define LOCALE_US "en_US"
#define LOCALE_FR "fr_FR"
#endif
Modified: logging/log4cxx/trunk/src/test/cpp/helpers/messagebuffertest.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/helpers/messagebuffertest.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/helpers/messagebuffertest.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/helpers/messagebuffertest.cpp Thu Dec 20 18:52:29 2007
@@ -18,9 +18,13 @@
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
#include <log4cxx/helpers/messagebuffer.h>
-#include <log4cxx/helpers/messagebuffer.h>
-#include <iomanip>
+#include <iomanip>
#include "../insertwide.h"
+#include <log4cxx/logstring.h>
+
+#if LOG4CXX_CFSTRING_API
+#include <CoreFoundation/CFString.h>
+#endif
using namespace log4cxx;
using namespace log4cxx::helpers;
@@ -33,16 +37,23 @@
CPPUNIT_TEST_SUITE(MessageBufferTest);
CPPUNIT_TEST(testInsertChar);
CPPUNIT_TEST(testInsertConstStr);
- CPPUNIT_TEST(testInsertStr);
+ CPPUNIT_TEST(testInsertStr);
CPPUNIT_TEST(testInsertString);
CPPUNIT_TEST(testInsertNull);
CPPUNIT_TEST(testInsertInt);
CPPUNIT_TEST(testInsertManipulator);
-#if LOG4CXX_HAS_WCHAR_T
- CPPUNIT_TEST(testInsertConstWStr);
- CPPUNIT_TEST(testInsertWString);
- CPPUNIT_TEST(testInsertWStr);
-#endif
+#if LOG4CXX_WCHAR_T_API
+ CPPUNIT_TEST(testInsertConstWStr);
+ CPPUNIT_TEST(testInsertWString);
+ CPPUNIT_TEST(testInsertWStr);
+#endif
+#if LOG4CXX_UNICHAR_API
+ CPPUNIT_TEST(testInsertConstUStr);
+ CPPUNIT_TEST(testInsertUString);
+#endif
+#if LOG4CXX_CFSTRING_API
+ CPPUNIT_TEST(testInsertCFString);
+#endif
CPPUNIT_TEST_SUITE_END();
@@ -63,20 +74,20 @@
CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
}
- void testInsertStr() {
- MessageBuffer buf;
- std::string greeting("Hello, World");
- char* part1 = (char*) malloc(10*sizeof(wchar_t));
- strcpy(part1, "Hello");
- char* part2 = (char*) malloc(10*sizeof(wchar_t));
- strcpy(part2, ", World");
- CharMessageBuffer& retval = buf << part1 << part2;
- free(part1);
- free(part2);
- CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
- CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
- }
-
+ void testInsertStr() {
+ MessageBuffer buf;
+ std::string greeting("Hello, World");
+ char* part1 = (char*) malloc(10*sizeof(wchar_t));
+ strcpy(part1, "Hello");
+ char* part2 = (char*) malloc(10*sizeof(wchar_t));
+ strcpy(part2, ", World");
+ CharMessageBuffer& retval = buf << part1 << part2;
+ free(part1);
+ free(part2);
+ CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
+ CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
+ }
+
void testInsertString() {
MessageBuffer buf;
std::string greeting("Hello, World");
@@ -108,39 +119,77 @@
CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
CPPUNIT_ASSERT_EQUAL(true, buf.hasStream());
}
-
-#if LOG4CXX_HAS_WCHAR_T
- void testInsertConstWStr() {
- MessageBuffer buf;
- std::wstring greeting(L"Hello, World");
- WideMessageBuffer& retval = buf << L"Hello" << L", World";
- CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
- CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
- }
-
- void testInsertWString() {
- MessageBuffer buf;
- std::wstring greeting(L"Hello, World");
- WideMessageBuffer& retval = buf << std::wstring(L"Hello") << std::wstring(L", World");
- CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
- CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
- }
-
- void testInsertWStr() {
- MessageBuffer buf;
- std::wstring greeting(L"Hello, World");
- wchar_t* part1 = (wchar_t*) malloc(10*sizeof(wchar_t));
- wcscpy(part1, L"Hello");
- wchar_t* part2 = (wchar_t*) malloc(10*sizeof(wchar_t));
- wcscpy(part2, L", World");
- WideMessageBuffer& retval = buf << part1 << part2;
- free(part1);
- free(part2);
- CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
- CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
- }
-
-#endif
+
+#if LOG4CXX_WCHAR_T_API
+ void testInsertConstWStr() {
+ MessageBuffer buf;
+ std::wstring greeting(L"Hello, World");
+ WideMessageBuffer& retval = buf << L"Hello" << L", World";
+ CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
+ CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
+ }
+
+ void testInsertWString() {
+ MessageBuffer buf;
+ std::wstring greeting(L"Hello, World");
+ WideMessageBuffer& retval = buf << std::wstring(L"Hello") << std::wstring(L", World");
+ CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
+ CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
+ }
+
+ void testInsertWStr() {
+ MessageBuffer buf;
+ std::wstring greeting(L"Hello, World");
+ wchar_t* part1 = (wchar_t*) malloc(10*sizeof(wchar_t));
+ wcscpy(part1, L"Hello");
+ wchar_t* part2 = (wchar_t*) malloc(10*sizeof(wchar_t));
+ wcscpy(part2, L", World");
+ WideMessageBuffer& retval = buf << part1 << part2;
+ free(part1);
+ free(part2);
+ CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
+ CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
+ }
+#endif
+
+#if LOG4CXX_UNICHAR_API
+ void testInsertConstUStr() {
+ MessageBuffer buf;
+ const UniChar hello[] = { 'H', 'e', 'l', 'l', 'o', 0 };
+ const UniChar world[] = { ',', ' ', 'W', 'o', 'r', 'l', 'd', 0 };
+ const UniChar greeting[] = { 'H', 'e', 'l', 'l', 'o',
+ ',', ' ', 'W', 'o', 'r', 'l', 'd', 0 };
+ UniCharMessageBuffer& retval = buf << hello << world;
+ CPPUNIT_ASSERT_EQUAL(std::basic_string<UniChar>(greeting), buf.str(retval));
+ CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
+ }
+
+ void testInsertUString() {
+ MessageBuffer buf;
+ const UniChar hello[] = { 'H', 'e', 'l', 'l', 'o', 0 };
+ const UniChar world[] = { ',', ' ', 'W', 'o', 'r', 'l', 'd', 0 };
+ const UniChar greeting[] = { 'H', 'e', 'l', 'l', 'o',
+ ',', ' ', 'W', 'o', 'r', 'l', 'd', 0 };
+ UniCharMessageBuffer& retval = buf << std::basic_string<UniChar>(hello)
+ << std::basic_string<UniChar>(world);
+ CPPUNIT_ASSERT_EQUAL(std::basic_string<UniChar>(greeting), buf.str(retval));
+ CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
+ }
+
+#endif
+
+#if LOG4CXX_CFSTRING_API
+ void testInsertCFString() {
+ MessageBuffer buf;
+ const log4cxx::UniChar greeting[] = { 'H', 'e', 'l', 'l', 'o',
+ ',', ' ', 'W', 'o', 'r', 'l', 'd', 0 };
+ UniCharMessageBuffer& retval = buf << CFSTR("Hello")
+ << CFSTR(", World");
+ CPPUNIT_ASSERT_EQUAL(std::basic_string<log4cxx::UniChar>(greeting), buf.str(retval));
+ CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
+ }
+
+#endif
};
Modified: logging/log4cxx/trunk/src/test/cpp/helpers/optionconvertertestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/helpers/optionconvertertestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/helpers/optionconvertertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/helpers/optionconvertertestcase.cpp Thu Dec 20 18:52:29 2007
@@ -155,7 +155,7 @@
stat = apr_temp_dir_get(&tmpdir, p);
CPPUNIT_ASSERT_EQUAL(APR_SUCCESS, stat);
LogString expected;
- Transcoder::decode(tmpdir, strlen(tmpdir), expected);
+ Transcoder::decode(tmpdir, expected);
apr_pool_destroy(p);
CPPUNIT_ASSERT_EQUAL(expected, actual);
@@ -180,7 +180,7 @@
stat = apr_uid_homepath_get(&dirname, username, p);
if (stat == APR_SUCCESS) {
LogString expected;
- Transcoder::decode(dirname, strlen(dirname), expected);
+ Transcoder::decode(dirname, expected);
CPPUNIT_ASSERT_EQUAL(expected, actual);
}
}
@@ -204,7 +204,7 @@
stat = apr_uid_name_get(&username, userid, p);
if (stat == APR_SUCCESS) {
LogString expected;
- Transcoder::decode(username, strlen(username), expected);
+ Transcoder::decode(username, expected);
CPPUNIT_ASSERT_EQUAL(expected, actual);
}
}
@@ -224,7 +224,7 @@
CPPUNIT_ASSERT_EQUAL(APR_SUCCESS, stat);
LogString expected;
- Transcoder::decode(dirname, strlen(dirname), expected);
+ Transcoder::decode(dirname, expected);
apr_pool_destroy(p);
CPPUNIT_ASSERT_EQUAL(expected, actual);
Modified: logging/log4cxx/trunk/src/test/cpp/helpers/stringhelpertestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/helpers/stringhelpertestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/helpers/stringhelpertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/helpers/stringhelpertestcase.cpp Thu Dec 20 18:52:29 2007
@@ -32,25 +32,11 @@
class StringHelperTestCase : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE( StringHelperTestCase );
-#if LOG4CXX_HAS_WCHAR_T
- CPPUNIT_TEST( testWideStartsWith1 );
- CPPUNIT_TEST( testWideStartsWith2 );
- CPPUNIT_TEST( testWideStartsWith3 );
- CPPUNIT_TEST( testWideStartsWith4 );
- CPPUNIT_TEST( testWideStartsWith5 );
-#endif
CPPUNIT_TEST( testStartsWith1 );
CPPUNIT_TEST( testStartsWith2 );
CPPUNIT_TEST( testStartsWith3 );
CPPUNIT_TEST( testStartsWith4 );
CPPUNIT_TEST( testStartsWith5 );
-#if LOG4CXX_HAS_WCHAR_T
- CPPUNIT_TEST( testWideEndsWith1 );
- CPPUNIT_TEST( testWideEndsWith2 );
- CPPUNIT_TEST( testWideEndsWith3 );
- CPPUNIT_TEST( testWideEndsWith4 );
- CPPUNIT_TEST( testWideEndsWith5 );
-#endif
CPPUNIT_TEST( testEndsWith1 );
CPPUNIT_TEST( testEndsWith2 );
CPPUNIT_TEST( testEndsWith3 );
@@ -60,149 +46,77 @@
public:
-#if LOG4CXX_HAS_WCHAR_T
- /**
- * Check that startsWith("foobar", "foo") returns true.
- */
- void testWideStartsWith1() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::startsWith(L"foobar", L"foo"));
- }
-
- /**
- * Check that startsWith("foo", "foobar") returns false.
- */
- void testWideStartsWith2() {
- CPPUNIT_ASSERT_EQUAL(false, StringHelper::startsWith(L"foo", L"foobar"));
- }
-
- /**
- * Check that startsWith("foobar", "foobar") returns true.
- */
- void testWideStartsWith3() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::startsWith(L"foobar", L"foobar"));
- }
-
- /**
- * Check that startsWith("foobar", "") returns true.
- */
- void testWideStartsWith4() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::startsWith(L"foobar", L""));
- }
-
- /**
- * Check that startsWith("foobar", "abc") returns false.
- */
- void testWideStartsWith5() {
- CPPUNIT_ASSERT_EQUAL(false, StringHelper::startsWith(L"foobar", L"abc"));
- }
-#endif
/**
* Check that startsWith("foobar", "foo") returns true.
*/
void testStartsWith1() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::startsWith("foobar", "foo"));
+ CPPUNIT_ASSERT_EQUAL(true, StringHelper::startsWith(LOG4CXX_STR("foobar"), LOG4CXX_STR("foo")));
}
/**
* Check that startsWith("bar", "foobar") returns false.
*/
void testStartsWith2() {
- CPPUNIT_ASSERT_EQUAL(false, StringHelper::startsWith("foo", "foobar"));
+ CPPUNIT_ASSERT_EQUAL(false, StringHelper::startsWith(LOG4CXX_STR("foo"), LOG4CXX_STR("foobar")));
}
/**
* Check that startsWith("foobar", "foobar") returns true.
*/
void testStartsWith3() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::startsWith("foobar", "foobar"));
+ CPPUNIT_ASSERT_EQUAL(true, StringHelper::startsWith(LOG4CXX_STR("foobar"), LOG4CXX_STR("foobar")));
}
/**
* Check that startsWith("foobar", "") returns true.
*/
void testStartsWith4() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::startsWith("foobar", ""));
+ CPPUNIT_ASSERT_EQUAL(true, StringHelper::startsWith(LOG4CXX_STR("foobar"), LOG4CXX_STR("")));
}
/**
* Check that startsWith("foobar", "abc") returns false.
*/
void testStartsWith5() {
- CPPUNIT_ASSERT_EQUAL(false, StringHelper::startsWith("foobar", "abc"));
+ CPPUNIT_ASSERT_EQUAL(false, StringHelper::startsWith(LOG4CXX_STR("foobar"), LOG4CXX_STR("abc")));
}
-#if LOG4CXX_HAS_WCHAR_T
- /**
- * Check that endsWith("foobar", "bar") returns true.
- */
- void testWideEndsWith1() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::endsWith(L"foobar", L"bar"));
- }
-
- /**
- * Check that endsWith("bar", "foobar") returns false.
- */
- void testWideEndsWith2() {
- CPPUNIT_ASSERT_EQUAL(false, StringHelper::endsWith(L"bar", L"foobar"));
- }
-
- /**
- * Check that endsWith("foobar", "foobar") returns true.
- */
- void testWideEndsWith3() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::endsWith(L"foobar", L"foobar"));
- }
-
- /**
- * Check that endsWith("foobar", "") returns true.
- */
- void testWideEndsWith4() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::endsWith(L"foobar", L""));
- }
-
- /**
- * Check that endsWith("foobar", "abc") returns false.
- */
- void testWideEndsWith5() {
- CPPUNIT_ASSERT_EQUAL(false, StringHelper::startsWith(L"foobar", L"abc"));
- }
-#endif
/**
* Check that endsWith("foobar", "bar") returns true.
*/
void testEndsWith1() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::endsWith("foobar", "bar"));
+ CPPUNIT_ASSERT_EQUAL(true, StringHelper::endsWith(LOG4CXX_STR("foobar"), LOG4CXX_STR("bar")));
}
/**
* Check that endsWith("bar", "foobar") returns false.
*/
void testEndsWith2() {
- CPPUNIT_ASSERT_EQUAL(false, StringHelper::endsWith("bar", "foobar"));
+ CPPUNIT_ASSERT_EQUAL(false, StringHelper::endsWith(LOG4CXX_STR("bar"), LOG4CXX_STR("foobar")));
}
/**
* Check that endsWith("foobar", "foobar") returns true.
*/
void testEndsWith3() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::endsWith("foobar", "foobar"));
+ CPPUNIT_ASSERT_EQUAL(true, StringHelper::endsWith(LOG4CXX_STR("foobar"), LOG4CXX_STR("foobar")));
}
/**
* Check that endsWith("foobar", "") returns true.
*/
void testEndsWith4() {
- CPPUNIT_ASSERT_EQUAL(true, StringHelper::endsWith("foobar", ""));
+ CPPUNIT_ASSERT_EQUAL(true, StringHelper::endsWith(LOG4CXX_STR("foobar"), LOG4CXX_STR("")));
}
/**
* Check that endsWith("foobar", "abc") returns false.
*/
void testEndsWith5() {
- CPPUNIT_ASSERT_EQUAL(false, StringHelper::startsWith("foobar", "abc"));
+ CPPUNIT_ASSERT_EQUAL(false, StringHelper::startsWith(LOG4CXX_STR("foobar"), LOG4CXX_STR("abc")));
}
Modified: logging/log4cxx/trunk/src/test/cpp/helpers/transcodertestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/helpers/transcodertestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/helpers/transcodertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/helpers/transcodertestcase.cpp Thu Dec 20 18:52:29 2007
@@ -30,27 +30,39 @@
{
CPPUNIT_TEST_SUITE(TranscoderTestCase);
CPPUNIT_TEST(decode1);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
CPPUNIT_TEST(decode2);
#endif
CPPUNIT_TEST(decode3);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
CPPUNIT_TEST(decode4);
#endif
CPPUNIT_TEST(decode7);
CPPUNIT_TEST(decode8);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
CPPUNIT_TEST(encode1);
#endif
CPPUNIT_TEST(encode2);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
CPPUNIT_TEST(encode3);
#endif
CPPUNIT_TEST(encode4);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
CPPUNIT_TEST(encode5);
#endif
CPPUNIT_TEST(encode6);
+ CPPUNIT_TEST(testDecodeUTF8_1);
+ CPPUNIT_TEST(testDecodeUTF8_2);
+ CPPUNIT_TEST(testDecodeUTF8_3);
+ CPPUNIT_TEST(testDecodeUTF8_4);
+#if LOG4CXX_UNICHAR_API
+ CPPUNIT_TEST(udecode2);
+ CPPUNIT_TEST(udecode4);
+ CPPUNIT_TEST(uencode1);
+ CPPUNIT_TEST(uencode3);
+ CPPUNIT_TEST(uencode5);
+#endif
+
CPPUNIT_TEST_SUITE_END();
@@ -62,7 +74,7 @@
CPPUNIT_ASSERT_EQUAL((LogString) LOG4CXX_STR("foo\nHello, World"), decoded);
}
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
void decode2() {
const wchar_t* greeting = L"Hello, World";
LogString decoded(LOG4CXX_STR("foo\n"));
@@ -78,7 +90,7 @@
CPPUNIT_ASSERT_EQUAL((LogString) LOG4CXX_STR("foo\n"), decoded);
}
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
void decode4() {
const wchar_t* nothing = L"";
LogString decoded(LOG4CXX_STR("foo\n"));
@@ -107,13 +119,14 @@
void decode8() {
std::string msg("Hello, World.");
- LogString actual(Transcoder::decode(msg));
+ LogString actual;
+ Transcoder::decode(msg, actual);
LogString expected(LOG4CXX_STR("Hello, World."));
CPPUNIT_ASSERT_EQUAL(expected, actual);
}
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
void encode1() {
const LogString greeting(LOG4CXX_STR("Hello, World"));
std::wstring encoded;
@@ -129,7 +142,7 @@
CPPUNIT_ASSERT_EQUAL((std::string) "Hello, World", encoded);
}
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
void encode3() {
LogString greeting(BUFSIZE - 3, LOG4CXX_STR('A'));
greeting.append(LOG4CXX_STR("Hello"));
@@ -151,7 +164,7 @@
CPPUNIT_ASSERT_EQUAL(std::string("Hello"), encoded.substr(BUFSIZE - 3));
}
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
void encode5() {
// arbitrary, hopefully meaningless, characters from
// Latin, Arabic, Armenian, Bengali, CJK and Cyrillic
@@ -160,7 +173,7 @@
// decode to LogString (UTF-16 or UTF-8)
//
LogString decoded;
- Transcoder::decode(greeting, 6, decoded);
+ Transcoder::decode(greeting, decoded);
//
// decode to wstring
//
@@ -174,10 +187,10 @@
#endif
void encode6() {
-#if LOG4CXX_LOGCHAR_IS_WCHAR
+#if LOG4CXX_LOGCHAR_IS_WCHAR || LOG4CXX_LOGCHAR_IS_UNICHAR
// arbitrary, hopefully meaningless, characters from
// Latin, Arabic, Armenian, Bengali, CJK and Cyrillic
- const wchar_t greeting[] = { L'A', 0x0605, 0x0530, 0x984, 0x40E3, 0x400, 0 };
+ const logchar greeting[] = { L'A', 0x0605, 0x0530, 0x984, 0x40E3, 0x400, 0 };
#endif
#if LOG4CXX_LOGCHAR_IS_UTF8
@@ -194,7 +207,7 @@
// decode to LogString (UTF-16 or UTF-8)
//
LogString decoded;
- Transcoder::decode(greeting, 6, decoded);
+ Transcoder::decode(greeting, decoded);
//
// decode to wstring
//
@@ -204,6 +217,93 @@
//
Transcoder::encode(decoded, encoded);
}
+
+ void testDecodeUTF8_1() {
+ std::string src("a");
+ LogString out;
+ Transcoder::decodeUTF8(src, out);
+ CPPUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("a")), out);
+ }
+
+ void testDecodeUTF8_2() {
+ std::string src(1, 0x80);
+ LogString out;
+ Transcoder::decodeUTF8(src, out);
+ CPPUNIT_ASSERT_EQUAL(LogString(1, Transcoder::LOSSCHAR), out);
+ }
+
+ void testDecodeUTF8_3() {
+ std::string src("\xC2");
+ LogString out;
+ Transcoder::decodeUTF8(src, out);
+ CPPUNIT_ASSERT_EQUAL(LogString(1, Transcoder::LOSSCHAR), out);
+ }
+
+ void testDecodeUTF8_4() {
+ std::string src("\xC2\xA9");
+ LogString out;
+ Transcoder::decodeUTF8(src, out);
+ LogString::const_iterator iter = out.begin();
+ unsigned int sv = Transcoder::decode(out, iter);
+ CPPUNIT_ASSERT_EQUAL((unsigned int) 0xA9, sv);
+ CPPUNIT_ASSERT_EQUAL(true, iter == out.end());
+ }
+
+
+#if LOG4CXX_UNICHAR_API
+ void udecode2() {
+ const UniChar greeting[] = { 'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', 0 };
+ LogString decoded(LOG4CXX_STR("foo\n"));
+ Transcoder::decode(greeting, decoded);
+ CPPUNIT_ASSERT_EQUAL((LogString) LOG4CXX_STR("foo\nHello, World"), decoded);
+ }
+
+ void udecode4() {
+ const UniChar nothing[] = { 0 };
+ LogString decoded(LOG4CXX_STR("foo\n"));
+ Transcoder::decode(nothing, decoded);
+ CPPUNIT_ASSERT_EQUAL((LogString) LOG4CXX_STR("foo\n"), decoded);
+ }
+
+ void uencode1() {
+ const LogString greeting(LOG4CXX_STR("Hello, World"));
+ std::basic_string<UniChar> encoded;
+ Transcoder::encode(greeting, encoded);
+ const UniChar expected[] = { 'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', 0 };
+ CPPUNIT_ASSERT_EQUAL(std::basic_string<UniChar>(expected), encoded);
+ }
+
+ void uencode3() {
+ LogString greeting(BUFSIZE - 3, LOG4CXX_STR('A'));
+ greeting.append(LOG4CXX_STR("Hello"));
+ std::basic_string<UniChar> encoded;
+ Transcoder::encode(greeting, encoded);
+ std::basic_string<UniChar> manyAs(BUFSIZE - 3, 'A');
+ CPPUNIT_ASSERT_EQUAL(manyAs, encoded.substr(0, BUFSIZE - 3));
+ const UniChar hello[] = { 'H', 'e', 'l', 'l', 'o', 0 };
+ CPPUNIT_ASSERT_EQUAL(std::basic_string<UniChar>(hello), encoded.substr(BUFSIZE - 3));
+ }
+
+ void uencode5() {
+ // arbitrary, hopefully meaningless, characters from
+ // Latin, Arabic, Armenian, Bengali, CJK and Cyrillic
+ const UniChar greeting[] = { L'A', 0x0605, 0x0530, 0x984, 0x40E3, 0x400, 0 };
+ //
+ // decode to LogString (UTF-16 or UTF-8)
+ //
+ LogString decoded;
+ Transcoder::decode(greeting, decoded);
+ //
+ // decode to basic_string<UniChar>
+ //
+ std::basic_string<UniChar> encoded;
+ Transcoder::encode(decoded, encoded);
+ //
+ // should be lossless
+ //
+ CPPUNIT_ASSERT_EQUAL(std::basic_string<UniChar>(greeting), encoded);
+ }
+#endif
};
Modified: logging/log4cxx/trunk/src/test/cpp/insertwide.h
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/insertwide.h?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/insertwide.h (original)
+++ logging/log4cxx/trunk/src/test/cpp/insertwide.h Thu Dec 20 18:52:29 2007
@@ -21,9 +21,14 @@
#include <ostream>
#include <string>
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
std::ostream& operator<<(std::ostream& os,
const std::wstring& str);
+#endif
+
+#if LOG4CXX_LOGCHAR_IS_UNICHAR || LOG4CXX_UNICHAR_API || LOG4CXX_CFSTRING_API
+std::ostream& operator<<(std::ostream& os,
+ const std::basic_string<log4cxx::UniChar>& str);
#endif
#endif
Modified: logging/log4cxx/trunk/src/test/cpp/leveltestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/leveltestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/leveltestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/leveltestcase.cpp Thu Dec 20 18:52:29 2007
@@ -22,6 +22,9 @@
#include <log4cxx/level.h>
#include "testchar.h"
+#if LOG4CXX_CFSTRING_API
+#include <CoreFoundation/CFString.h>
+#endif
using namespace log4cxx;
@@ -33,9 +36,15 @@
CPPUNIT_TEST(testTrace);
CPPUNIT_TEST(testIntToTrace);
CPPUNIT_TEST(testStringToTrace);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
CPPUNIT_TEST(testWideStringToTrace);
#endif
+#if LOG4CXX_UNICHAR_API
+ CPPUNIT_TEST(testUniCharStringToTrace);
+#endif
+#if LOG4CXX_CFSTRING_API
+ CPPUNIT_TEST(testCFStringToTrace);
+#endif
CPPUNIT_TEST_SUITE_END();
public:
@@ -77,12 +86,33 @@
CPPUNIT_ASSERT(trace->toString() == LOG4CXX_STR("TRACE"));
}
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
/**
* Tests Level.toLevel(L"TRACE");
*/
void testWideStringToTrace() {
LevelPtr trace(Level::toLevel(L"TRACE"));
+ CPPUNIT_ASSERT(trace->toString() == LOG4CXX_STR("TRACE"));
+ }
+#endif
+
+#if LOG4CXX_UNICHAR_API
+ /**
+ * Tests Level.toLevel("TRACE");
+ */
+ void testUniCharStringToTrace() {
+ const UniChar name[] = { 'T', 'R', 'A', 'C', 'E', 0 };
+ LevelPtr trace(Level::toLevel(name));
+ CPPUNIT_ASSERT(trace->toString() == LOG4CXX_STR("TRACE"));
+ }
+#endif
+
+#if LOG4CXX_CFSTRING_API
+ /**
+ * Tests Level.toLevel(CFSTR("TRACE"));
+ */
+ void testCFStringToTrace() {
+ LevelPtr trace(Level::toLevel(CFSTR("TRACE")));
CPPUNIT_ASSERT(trace->toString() == LOG4CXX_STR("TRACE"));
}
#endif
Modified: logging/log4cxx/trunk/src/test/cpp/main.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/main.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/main.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/main.cpp Thu Dec 20 18:52:29 2007
@@ -155,10 +155,20 @@
#endif
return wasSuccessful ? EXIT_SUCCESS : EXIT_FAILURE;
}
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
std::ostream& operator<<(std::ostream& os,
const std::wstring& str) {
LOG4CXX_DECODE_WCHAR(tmp, str);
+ LOG4CXX_ENCODE_CHAR(encoded, tmp);
+ os << encoded;
+ return os;
+}
+#endif
+
+#if LOG4CXX_LOGCHAR_IS_UNICHAR || LOG4CXX_UNICHAR_API || LOG4CXX_CFSTRING_API
+std::ostream& operator<<(std::ostream& os,
+ const std::basic_string<log4cxx::UniChar>& str) {
+ LOG4CXX_DECODE_UNICHAR(tmp, str);
LOG4CXX_ENCODE_CHAR(encoded, tmp);
os << encoded;
return os;
Modified: logging/log4cxx/trunk/src/test/cpp/minimumtestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/minimumtestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/minimumtestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/minimumtestcase.cpp Thu Dec 20 18:52:29 2007
@@ -37,7 +37,7 @@
#include "testchar.h"
#include <log4cxx/spi/loggerrepository.h>
#include <log4cxx/helpers/stringhelper.h>
-
+#include <apr_strings.h>
using namespace log4cxx;
using namespace log4cxx::helpers;
@@ -116,9 +116,9 @@
}
std::string createMessage(int i, Pool& pool) {
- std::string msg("Message ");
- StringHelper::toString(i, pool, msg);
- return msg;
+ std::string msg("Message ");
+ msg.append(apr_itoa((apr_pool_t*) pool.getAPRPool(), i));
+ return msg;
}
void common()
Modified: logging/log4cxx/trunk/src/test/cpp/net/socketservertestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/net/socketservertestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/net/socketservertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/net/socketservertestcase.cpp Thu Dec 20 18:52:29 2007
@@ -462,7 +462,7 @@
i++;
std::string msg("Message ");
- LOG4CXX_LOG(logger, XLevel::TRACE, msg << i);
+ LOG4CXX_LOG(logger, XLevel::getTrace(), msg << i);
i++;
LOG4CXX_DEBUG(logger, msg << i);
i++;
@@ -472,7 +472,7 @@
i++;
LOG4CXX_WARN(logger, msg << i);
i++;
- LOG4CXX_LOG(logger, XLevel::LETHAL, msg << i); //5
+ LOG4CXX_LOG(logger, XLevel::getLethal(), msg << i); //5
NDC::pop();
MDC::remove(key);
Modified: logging/log4cxx/trunk/src/test/cpp/pattern/patternparsertestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/pattern/patternparsertestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/pattern/patternparsertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/pattern/patternparsertestcase.cpp Thu Dec 20 18:52:29 2007
@@ -209,7 +209,8 @@
expected.append(event->getThreadName());
expected.append(LOG4CXX_STR("] "));
expected.append(logger->getName());
- expected.append(LOG4CXX_STR(" - msg 1") LOG4CXX_EOL);
+ expected.append(LOG4CXX_STR(" - msg 1"));
+ expected.append(LOG4CXX_EOL);
assertFormattedEquals(LOG4CXX_STR("%relative %-5level [%thread] %logger - %m%n"),
getFormatSpecifiers(),
Modified: logging/log4cxx/trunk/src/test/cpp/patternlayouttest.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/patternlayouttest.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/patternlayouttest.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/patternlayouttest.cpp Thu Dec 20 18:52:29 2007
@@ -509,7 +509,7 @@
std::string createMessage(Pool& pool, int i) {
std::string msg("Message ");
- StringHelper::toString(i, pool, msg);
+ msg.append(apr_itoa((apr_pool_t*) pool.getAPRPool(), i));
return msg;
}
Modified: logging/log4cxx/trunk/src/test/cpp/rolling/timebasedrollingtest.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/rolling/timebasedrollingtest.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/rolling/timebasedrollingtest.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/rolling/timebasedrollingtest.cpp Thu Dec 20 18:52:29 2007
@@ -27,6 +27,7 @@
#include <iostream>
#include <log4cxx/helpers/stringhelper.h>
#include "../util/compare.h"
+#include <apr_strings.h>
#ifndef INT64_C
@@ -122,7 +123,7 @@
{ for (int i = 0; i < 5; i++) {
std::string message("Hello---");
- StringHelper::toString(i, pool, message);
+ message.append(apr_itoa((apr_pool_t*) pool.getAPRPool(), i));
LOG4CXX_DEBUG(logger, message);
apr_sleep(APR_USEC_PER_SEC/2);
} }
@@ -166,7 +167,7 @@
{ for (int i = 0; i <= 2; i++) {
std::string message("Hello---");
- StringHelper::toString(i, pool, message);
+ message.append(apr_itoa((apr_pool_t*) pool.getAPRPool(), i));
LOG4CXX_DEBUG(logger, message);
apr_sleep(APR_USEC_PER_SEC/2);
} }
@@ -188,7 +189,7 @@
{ for (int i = 3; i <= 4; i++) {
std::string message("Hello---");
- StringHelper::toString(i, pool, message);
+ message.append(apr_itoa((apr_pool_t*) pool.getAPRPool(), i));
LOG4CXX_DEBUG(logger, message);
apr_sleep(APR_USEC_PER_SEC/2);
} }
@@ -236,7 +237,7 @@
{ for (int i = 0; i < 5; i++) {
std::string message("Hello---");
- StringHelper::toString(i, p, message);
+ message.append(apr_itoa((apr_pool_t*) p.getAPRPool(), i));
LOG4CXX_DEBUG(logger, message);
apr_sleep(APR_USEC_PER_SEC/2);
} }
@@ -285,7 +286,7 @@
{ for (int i = 0; i <= 2; i++) {
std::string message("Hello---");
- StringHelper::toString(i, pool, message);
+ message.append(apr_itoa((apr_pool_t*) pool.getAPRPool(), i));
LOG4CXX_DEBUG(logger, message);
apr_sleep(APR_USEC_PER_SEC/2);
} }
@@ -307,7 +308,7 @@
{ for (int i = 3; i <= 4; i++) {
std::string message("Hello---");
- StringHelper::toString(i, pool, message);
+ message.append(apr_itoa((apr_pool_t*) pool.getAPRPool(), i));
LOG4CXX_DEBUG(logger, message);
apr_sleep(APR_USEC_PER_SEC/2);
} }
@@ -356,7 +357,7 @@
{ for (int i = 0; i < 5; i++) {
std::string message("Hello---");
- StringHelper::toString(i, pool, message);
+ message.append(apr_itoa((apr_pool_t*) pool.getAPRPool(), i));
LOG4CXX_DEBUG(logger, message);
apr_sleep(APR_USEC_PER_SEC/2);
} }
@@ -405,7 +406,7 @@
{ for (int i = 0; i < 5; i++) {
std::string message("Hello---");
- StringHelper::toString(i, p, message);
+ message.append(apr_itoa((apr_pool_t*) p.getAPRPool(), i));
LOG4CXX_DEBUG(logger, message);
apr_sleep(APR_USEC_PER_SEC/2);
} }
Modified: logging/log4cxx/trunk/src/test/cpp/streamtestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/streamtestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/streamtestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/streamtestcase.cpp Thu Dec 20 18:52:29 2007
@@ -26,6 +26,10 @@
#include "insertwide.h"
#include <log4cxx/stream.h>
+#if LOG4CXX_CFSTRING_API
+#include <CoreFoundation/CFString.h>
+#endif
+
using namespace log4cxx;
using namespace log4cxx::helpers;
using namespace std;
@@ -62,7 +66,7 @@
CPPUNIT_TEST(testScientific);
CPPUNIT_TEST(testPrecision);
CPPUNIT_TEST(testWidth);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
CPPUNIT_TEST(testWide);
CPPUNIT_TEST(testWideAppend);
CPPUNIT_TEST(testWideWidth);
@@ -79,7 +83,7 @@
CPPUNIT_TEST(testLogStreamDelegate);
CPPUNIT_TEST(testLogStreamFormattingPersists);
CPPUNIT_TEST(testSetWidthInsert);
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
CPPUNIT_TEST(testWLogStreamSimple);
CPPUNIT_TEST(testWLogStreamMultiple);
CPPUNIT_TEST(testWLogStreamShortCircuit);
@@ -91,6 +95,27 @@
CPPUNIT_TEST(testWLogStreamFormattingPersists);
CPPUNIT_TEST(testWSetWidthInsert);
#endif
+#if LOG4CXX_UNICHAR_API
+ CPPUNIT_TEST(testUniChar);
+ CPPUNIT_TEST(testUniCharAppend);
+// CPPUNIT_TEST(testUniCharWidth);
+ CPPUNIT_TEST(testULogStreamSimple);
+ CPPUNIT_TEST(testULogStreamMultiple);
+ CPPUNIT_TEST(testULogStreamShortCircuit);
+ CPPUNIT_TEST_EXCEPTION(testULogStreamInsertException, std::exception);
+// CPPUNIT_TEST(testULogStreamScientific);
+// CPPUNIT_TEST(testULogStreamPrecision);
+// CPPUNIT_TEST(testULogStreamWidth);
+ CPPUNIT_TEST(testULogStreamDelegate);
+// CPPUNIT_TEST(testULogStreamFormattingPersists);
+// CPPUNIT_TEST(testUSetWidthInsert);
+#endif
+#if LOG4CXX_CFSTRING_API
+ CPPUNIT_TEST(testCFString);
+ CPPUNIT_TEST(testCFStringAppend);
+ CPPUNIT_TEST(testULogStreamCFString);
+ CPPUNIT_TEST(testULogStreamCFString2);
+#endif
CPPUNIT_TEST_SUITE_END();
VectorAppenderPtr vectorAppender;
@@ -160,27 +185,6 @@
CPPUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("[__10.00]")), msg);
}
-#if LOG4CXX_HAS_WCHAR_T
- void testWide() {
- LoggerPtr root(Logger::getRootLogger());
- LOG4CXX_INFO(root, L"This is a test");
- CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
- }
-
- void testWideAppend() {
- LoggerPtr root(Logger::getRootLogger());
- LOG4CXX_INFO(root, L"This is a test" << L": Details to follow");
- CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
- }
-
- void testWideWidth() {
- LoggerPtr root(Logger::getRootLogger());
- LOG4CXX_INFO(root, L'[' << std::fixed << std::setprecision(2) << std::setw(7) << std::right << std::setfill(L'_') << 10.0 << L"]");
- spi::LoggingEventPtr event(vectorAppender->getVector()[0]);
- LogString msg(event->getMessage());
- CPPUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("[__10.00]")), msg);
- }
-#endif
void testBaseFlags() {
logstream base1(Logger::getRootLogger(), Level::getInfo());
logstream base2(Logger::getRootLogger(), Level::getInfo());
@@ -309,7 +313,27 @@
-#if LOG4CXX_HAS_WCHAR_T
+#if LOG4CXX_WCHAR_T_API
+ void testWide() {
+ LoggerPtr root(Logger::getRootLogger());
+ LOG4CXX_INFO(root, L"This is a test");
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ }
+
+ void testWideAppend() {
+ LoggerPtr root(Logger::getRootLogger());
+ LOG4CXX_INFO(root, L"This is a test" << L": Details to follow");
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ }
+
+ void testWideWidth() {
+ LoggerPtr root(Logger::getRootLogger());
+ LOG4CXX_INFO(root, L'[' << std::fixed << std::setprecision(2) << std::setw(7) << std::right << std::setfill(L'_') << 10.0 << L"]");
+ spi::LoggingEventPtr event(vectorAppender->getVector()[0]);
+ LogString msg(event->getMessage());
+ CPPUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("[__10.00]")), msg);
+ }
+
void testWLogStreamSimple() {
wlogstream root(Logger::getRootLogger(), Level::getInfo());
root << L"This is a test" << LOG4CXX_ENDMSG;
@@ -399,6 +423,161 @@
}
#endif
+
+#if LOG4CXX_UNICHAR_API
+ void testUniChar() {
+ LoggerPtr root(Logger::getRootLogger());
+ const UniChar msg[] = { 'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't', 0 };
+ LOG4CXX_INFO(root, msg);
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ }
+
+ void testUniCharAppend() {
+ LoggerPtr root(Logger::getRootLogger());
+ const UniChar msg1[] = { 'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't', 0 };
+ const UniChar msg2[] = { ':', ' ', 'D', 'e', 't', 'a', 'i', 'l', 's', ' ', 't', 'o', ' ', 'f', 'o', 'l', 'l', 'o', 'w', 0 };
+ LOG4CXX_INFO(root, msg1 << msg2);
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ }
+
+ void testUniCharWidth() {
+ LoggerPtr root(Logger::getRootLogger());
+ const UniChar openBracket[] = { '[', 0 };
+ const UniChar closeBracket[] = { ']', 0 };
+ LOG4CXX_INFO(root, openBracket << std::fixed << std::setprecision(2) << std::setw(7) << std::right << std::setfill((UniChar) '_') << 10.0 << closeBracket);
+ spi::LoggingEventPtr event(vectorAppender->getVector()[0]);
+ LogString msg(event->getMessage());
+ CPPUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("[__10.00]")), msg);
+ }
+
+ void testULogStreamSimple() {
+ ulogstream root(Logger::getRootLogger(), Level::getInfo());
+ const UniChar msg[] = { 'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't', 0 };
+ root << msg << LOG4CXX_ENDMSG;
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ }
+
+ void testULogStreamMultiple() {
+ ulogstream root(Logger::getRootLogger(), Level::getInfo());
+ const UniChar msg1[] = { 'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't', 0 };
+ const UniChar msg2[] = { ':', ' ', 'D', 'e', 't', 'a', 'i', 'l', 's', ' ', 't', 'o', ' ', 'f', 'o', 'l', 'l', 'o', 'w', 0 };
+ root << msg1 << msg2 << LOG4CXX_ENDMSG;
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ }
+
+ void testULogStreamShortCircuit() {
+ LoggerPtr logger(Logger::getLogger("StreamTestCase.shortCircuit"));
+ logger->setLevel(Level::getInfo());
+ ulogstream os(logger, Level::getDebug());
+ ExceptionOnInsert someObj;
+ os << someObj << LOG4CXX_ENDMSG;
+ CPPUNIT_ASSERT_EQUAL((size_t) 0, vectorAppender->getVector().size());
+ }
+
+ void testULogStreamInsertException() {
+ LoggerPtr logger(Logger::getLogger("StreamTestCase.insertException"));
+ ExceptionOnInsert someObj;
+ ulogstream os(logger, Level::getInfo());
+ os << someObj << LOG4CXX_ENDMSG;
+ }
+
+ void testULogStreamScientific() {
+ LoggerPtr root(Logger::getRootLogger());
+ ulogstream os(root, Level::getInfo());
+ os << std::scientific << 0.000001115 << LOG4CXX_ENDMSG;
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ spi::LoggingEventPtr event(vectorAppender->getVector()[0]);
+ LogString msg(event->getMessage());
+ CPPUNIT_ASSERT(msg.find(LOG4CXX_STR("e-")) != LogString::npos ||
+ msg.find(LOG4CXX_STR("E-")) != LogString::npos);
+ }
+
+ void testULogStreamPrecision() {
+ LoggerPtr root(Logger::getRootLogger());
+ ulogstream os(root, Level::getInfo());
+ os << std::setprecision(4) << 1.000001 << LOG4CXX_ENDMSG;
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ spi::LoggingEventPtr event(vectorAppender->getVector()[0]);
+ LogString msg(event->getMessage());
+ CPPUNIT_ASSERT(msg.find(LOG4CXX_STR("1.00000")) == LogString::npos);
+ }
+
+
+ void testULogStreamWidth() {
+ LoggerPtr root(Logger::getRootLogger());
+ ulogstream os(root, Level::getInfo());
+ const UniChar openBracket[] = { '[', 0 };
+ const UniChar closeBracket[] = { ']', 0 };
+
+ os << openBracket << std::fixed << std::setprecision(2) << std::setw(7) << std::right
+ << std::setfill((UniChar) '_') << 10.0 << closeBracket << LOG4CXX_ENDMSG;
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ spi::LoggingEventPtr event(vectorAppender->getVector()[0]);
+ LogString msg(event->getMessage());
+ CPPUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("[__10.00]")), msg);
+ }
+
+ void ureport(std::basic_ostream<UniChar>& os) {
+ const UniChar msg1[] = { 'T', 'h', 'i', 's', ' ', 'j', 'u', 's', 't', ' ' , 'i', 'n', ':', ' ' , '\n', 0 };
+ const UniChar msg2[] = { 'U', 's', 'e', ' ', 'l', 'o', 'g', 's', 't', 'r', 'e', 'a', 'm', '\n', 0 };
+ os << msg1;
+ os << msg2;
+ }
+
+ void testULogStreamDelegate() {
+ ulogstream root(Logger::getRootLogger(), Level::getInfo());
+ ureport(root);
+ root << LOG4CXX_ENDMSG;
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ }
+
+ void testULogStreamFormattingPersists() {
+ LoggerPtr root(Logger::getRootLogger());
+ root->setLevel(Level::getInfo());
+ ulogstream os(root, Level::getDebug());
+ os << std::hex << 20 << LOG4CXX_ENDMSG;
+ os << Level::getInfo() << 16 << LOG4CXX_ENDMSG;
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ spi::LoggingEventPtr event(vectorAppender->getVector()[0]);
+ LogString msg(event->getMessage());
+ CPPUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("10")), msg);
+ }
+
+ void testUSetWidthInsert() {
+ LoggerPtr root(Logger::getRootLogger());
+ root->setLevel(Level::getInfo());
+ ulogstream os(root, Level::getInfo());
+ os << std::setw(5);
+ CPPUNIT_ASSERT_EQUAL(5, os.width());
+ }
+
+#endif
+
+#if LOG4CXX_CFSTRING_API
+ void testCFString() {
+ LoggerPtr root(Logger::getRootLogger());
+ LOG4CXX_INFO(root, CFSTR("This is a test"));
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ }
+
+ void testCFStringAppend() {
+ LoggerPtr root(Logger::getRootLogger());
+ LOG4CXX_INFO(root, CFSTR("This is a test") << CFSTR(": Details to follow"));
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ }
+
+ void testULogStreamCFString() {
+ ulogstream root(Logger::getRootLogger(), Level::getInfo());
+ root << CFSTR("This is a test") << LOG4CXX_ENDMSG;
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ }
+
+ void testULogStreamCFString2() {
+ ulogstream root(Logger::getRootLogger(), Level::getInfo());
+ root << CFSTR("This is a test") << CFSTR(": Details to follow") << LOG4CXX_ENDMSG;
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, vectorAppender->getVector().size());
+ }
+#endif
};
Modified: logging/log4cxx/trunk/src/test/cpp/testchar.h
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/testchar.h?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/testchar.h (original)
+++ logging/log4cxx/trunk/src/test/cpp/testchar.h Thu Dec 20 18:52:29 2007
@@ -22,7 +22,7 @@
// This macro and typedef lets many tests
// check either the wchar_t or char based methods.
//
-#if LOG4CXX_HAS_WCHAR_T && defined(LOG4CXX_TEST_WCHAR)
+#if LOG4CXX_WCHAR_T_API && defined(LOG4CXX_TEST_WCHAR)
#define LOG4CXX_TEST_STR(str) L ## str
typedef wchar_t testchar;
#else
Modified: logging/log4cxx/trunk/src/test/cpp/util/compare.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/util/compare.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/util/compare.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/util/compare.cpp Thu Dec 20 18:52:29 2007
@@ -16,14 +16,12 @@
*/
#include "compare.h"
-#include <fstream>
-#include <iostream>
-#include <log4cxx/helpers/transcoder.h>
#include <log4cxx/helpers/pool.h>
#include <log4cxx/file.h>
#include <log4cxx/helpers/stringhelper.h>
#include <log4cxx/helpers/fileinputstream.h>
#include <log4cxx/helpers/inputstreamreader.h>
+#include <log4cxx/helpers/systemoutwriter.h>
using namespace log4cxx;
using namespace log4cxx::helpers;
@@ -47,11 +45,11 @@
LogString s2;
int lineCounter = 0;
- while (StringHelper::getline(in1, s1))
+ while (getline(in1, s1))
{
lineCounter++;
- if(!StringHelper::getline(in2, s2)) {
+ if(!getline(in2, s2)) {
s2.erase(s2.begin(), s2.end());
}
@@ -61,14 +59,16 @@
msg += LOG4CXX_STR("] and [");
msg += file2.getName();
msg += LOG4CXX_STR("] differ on line ");
- msg += StringHelper::toString(lineCounter, pool);
+ StringHelper::toString(lineCounter, pool, msg);
msg += LOG4CXX_EOL;
msg += LOG4CXX_STR("One reads: [");
msg += s1;
- msg += LOG4CXX_STR("].") LOG4CXX_EOL;
+ msg += LOG4CXX_STR("].");
+ msg += LOG4CXX_EOL;
msg += LOG4CXX_STR("Other reads:[");
msg += s2;
- msg += LOG4CXX_STR("].") LOG4CXX_EOL;
+ msg += LOG4CXX_STR("].");
+ msg += LOG4CXX_EOL;
emit(msg);
outputFile(file1, back1, pool);
@@ -79,12 +79,13 @@
}
// the second file is longer
- if (StringHelper::getline(in2, s2)) {
+ if (getline(in2, s2)) {
LogString msg(LOG4CXX_STR("File ["));
msg += file2.getName();
msg += LOG4CXX_STR("] longer than file [");
msg += file1.getName();
- msg += LOG4CXX_STR("].") LOG4CXX_EOL;
+ msg += LOG4CXX_STR("].");
+ msg += LOG4CXX_EOL;
emit(msg);
outputFile(file1, back1, pool);
outputFile(file2, back2, pool);
@@ -100,18 +101,22 @@
log4cxx::helpers::Pool& pool)
{
int lineCounter = 0;
- emit(LOG4CXX_STR("--------------------------------") LOG4CXX_EOL);
+ emit(LOG4CXX_STR("--------------------------------"));
+ emit(LOG4CXX_EOL);
LogString msg(LOG4CXX_STR("Contents of "));
msg += file.getName();
- msg += LOG4CXX_STR(":") LOG4CXX_EOL;
+ msg += LOG4CXX_STR(":");
+ msg += LOG4CXX_EOL;
emit(msg);
LogString in1(contents);
LogString s1;
- while (StringHelper::getline(in1, s1))
+ while (getline(in1, s1))
{
lineCounter++;
- emit(StringHelper::toString(lineCounter, pool));
+ LogString line;
+ StringHelper::toString(lineCounter, pool, line);
+ emit(line);
if (lineCounter < 10)
{
@@ -134,13 +139,32 @@
}
}
-void Compare::emit(const std::string& s1) {
- std::cout << s1;
+void Compare::emit(const LogString& s1) {
+ SystemOutWriter::write(s1);
}
-#if LOG4CXX_HAS_WCHAR_T
-void Compare::emit(const std::wstring& s1) {
- std::wcout << s1;
+
+bool Compare::getline(LogString& in, LogString& line) {
+ if (in.empty()) {
+ return false;
+ }
+ size_t nl = in.find(0x0A);
+ if (nl == std::string::npos) {
+ line = in;
+ in.erase(in.begin(), in.end());
+ } else {
+ //
+ // if the file has CR-LF then
+ // drop the carriage return alse
+ //
+ if(nl > 0 && in[nl -1] == 0x0D) {
+ line.assign(in, 0, nl - 1);
+ } else {
+ line.assign(in, 0, nl);
+ }
+ in.erase(in.begin(), in.begin() + nl + 1);
+ }
+ return true;
}
-#endif
+
Modified: logging/log4cxx/trunk/src/test/cpp/util/compare.h
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/util/compare.h?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/util/compare.h (original)
+++ logging/log4cxx/trunk/src/test/cpp/util/compare.h Thu Dec 20 18:52:29 2007
@@ -36,10 +36,8 @@
const LogString& contents,
log4cxx::helpers::Pool& pool);
- static void emit(const std::string &line);
+ static void emit(const LogString &line);
+ static bool getline(LogString& buf, LogString& line);
-#if LOG4CXX_HAS_WCHAR_T
- static void emit(const std::wstring &line);
-#endif
};
}
Modified: logging/log4cxx/trunk/src/test/cpp/varia/levelmatchfiltertestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/varia/levelmatchfiltertestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/varia/levelmatchfiltertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/varia/levelmatchfiltertestcase.cpp Thu Dec 20 18:52:29 2007
@@ -92,7 +92,7 @@
// set the level to match
matchFilter->setLevelToMatch(levelArray[x]->toString());
LogString sbuf(LOG4CXX_STR("pass "));
- sbuf.append(StringHelper::toString(x, pool));
+ StringHelper::toString(x, pool, sbuf);
sbuf.append(LOG4CXX_STR("; filter set to accept only "));
sbuf.append(levelArray[x]->toString());
sbuf.append(LOG4CXX_STR(" msgs"));
@@ -132,7 +132,7 @@
matchFilter->setLevelToMatch(levelArray[x]->toString());
LogString sbuf(LOG4CXX_STR("pass "));
- sbuf.append(StringHelper::toString(x, pool));
+ StringHelper::toString(x, pool, sbuf);
sbuf.append(LOG4CXX_STR("; filter set to deny only "));
sbuf.append(levelArray[x]->toString());
sbuf.append(LOG4CXX_STR(" msgs"));
Modified: logging/log4cxx/trunk/src/test/cpp/varia/levelrangefiltertestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/varia/levelrangefiltertestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/varia/levelrangefiltertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/varia/levelrangefiltertestcase.cpp Thu Dec 20 18:52:29 2007
@@ -84,7 +84,7 @@
LogString sbuf(LOG4CXX_STR("pass "));
Pool pool;
- sbuf.append(StringHelper::toString(passCount, pool));
+ StringHelper::toString(passCount, pool, sbuf);
sbuf.append(LOG4CXX_STR("; no min or max set"));
common(sbuf);
@@ -93,7 +93,7 @@
// test with a min set
rangeFilter->setLevelMin(Level::getWarn());
sbuf.assign(LOG4CXX_STR("pass "));
- sbuf.append(StringHelper::toString(passCount, pool));
+ StringHelper::toString(passCount, pool, sbuf);
sbuf.append(LOG4CXX_STR("; min set to WARN, max not set"));
common(sbuf);
passCount++;
@@ -106,7 +106,7 @@
//test with max set
rangeFilter->setLevelMax(Level::getWarn());
sbuf.assign(LOG4CXX_STR("pass "));
- sbuf.append(StringHelper::toString(passCount, pool));
+ StringHelper::toString(passCount, pool, sbuf);
sbuf.append(LOG4CXX_STR("; min not set, max set to WARN"));
common(sbuf);
passCount++;
@@ -129,7 +129,7 @@
rangeFilter->setLevelMax(levelArray[y]);
sbuf.assign(LOG4CXX_STR("pass "));
- sbuf.append(StringHelper::toString(passCount, pool));
+ StringHelper::toString(passCount, pool, sbuf);
sbuf.append(LOG4CXX_STR("; filter set to accept between "));
sbuf.append(levelArray[x]->toString());
sbuf.append(LOG4CXX_STR(" and "));
@@ -169,7 +169,7 @@
LogString sbuf(LOG4CXX_STR("pass "));
Pool pool;
- sbuf.append(StringHelper::toString(passCount, pool));
+ StringHelper::toString(passCount, pool, sbuf);
// test with no min or max set
sbuf.append(LOG4CXX_STR("; no min or max set"));
@@ -180,7 +180,7 @@
rangeFilter->setLevelMin(Level::getWarn());
sbuf.assign(LOG4CXX_STR("pass "));
- sbuf.append(StringHelper::toString(passCount, pool));
+ StringHelper::toString(passCount, pool, sbuf);
sbuf.append(LOG4CXX_STR("; min set to WARN, max not set"));
common(sbuf);
passCount++;
@@ -194,7 +194,7 @@
rangeFilter->setLevelMax(Level::getWarn());
sbuf.assign(LOG4CXX_STR("pass "));
- sbuf.append(StringHelper::toString(passCount, pool));
+ StringHelper::toString(passCount, pool, sbuf);
sbuf.append(LOG4CXX_STR("; min not set, max set to WARN"));
common(sbuf);
@@ -217,7 +217,7 @@
rangeFilter->setLevelMax(levelArray[y]);
sbuf.assign(LOG4CXX_STR("pass "));
- sbuf.append(StringHelper::toString(passCount, pool));
+ StringHelper::toString(passCount, pool, sbuf);
sbuf.append(LOG4CXX_STR("; filter set to accept between "));
sbuf.append(levelArray[x]->toString());
sbuf.append(LOG4CXX_STR(" and "));
Modified: logging/log4cxx/trunk/src/test/cpp/xml/customleveltestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/xml/customleveltestcase.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/xml/customleveltestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/xml/customleveltestcase.cpp Thu Dec 20 18:52:29 2007
@@ -117,7 +117,7 @@
LOG4CXX_ERROR(logger, os.str());
os.str("");
os << "Message " << ++i;
- LOG4CXX_LOG(logger, XLevel::TRACE, os.str());
+ LOG4CXX_LOG(logger, XLevel::getTrace(), os.str());
}
};
Modified: logging/log4cxx/trunk/src/test/cpp/xml/xlevel.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/xml/xlevel.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/xml/xlevel.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/xml/xlevel.cpp Thu Dec 20 18:52:29 2007
@@ -23,43 +23,34 @@
IMPLEMENT_LOG4CXX_LEVEL(XLevel)
-const LevelPtr XLevel::TRACE(XLevel::getTrace());
-const LevelPtr XLevel::LETHAL(XLevel::getLethal());
-
-XLevel::XLevel(int level1, const logchar* name1, int syslogEquivalent1)
+XLevel::XLevel(int level1, const LogString& name1, int syslogEquivalent1)
: Level(level1, name1, syslogEquivalent1)
{
}
-const LevelPtr& XLevel::getTrace() {
+LevelPtr XLevel::getTrace() {
static const LevelPtr trace(new XLevel(XLevel::TRACE_INT, LOG4CXX_STR("TRACE"), 7));
return trace;
}
-const LevelPtr& XLevel::getLethal() {
+LevelPtr XLevel::getLethal() {
static const LevelPtr lethal(new XLevel(XLevel::LETHAL_INT, LOG4CXX_STR("LETHAL"), 0));
return lethal;
}
-const LevelPtr& XLevel::toLevel(const std::string& sArg)
+LevelPtr XLevel::toLevelLS(const LogString& sArg)
{
- return toLevel(sArg, getTrace());
+ return toLevelLS(sArg, getTrace());
}
-#if LOG4CXX_HAS_WCHAR_T
-const LevelPtr& XLevel::toLevel(const std::wstring& sArg)
-{
- return toLevel(sArg, getTrace());
-}
-#endif
-const LevelPtr& XLevel::toLevel(int val)
+LevelPtr XLevel::toLevel(int val)
{
return toLevel(val, getTrace());
}
-const LevelPtr& XLevel::toLevel(int val, const LevelPtr& defaultLevel)
+LevelPtr XLevel::toLevel(int val, const LevelPtr& defaultLevel)
{
switch(val)
{
@@ -69,9 +60,7 @@
}
}
-
-#if LOG4CXX_HAS_WCHAR_T
-const LevelPtr& XLevel::toLevel(const std::wstring& sArg, const LevelPtr& defaultLevel)
+LevelPtr XLevel::toLevelLS(const LogString& sArg, const LevelPtr& defaultLevel)
{
if (sArg.empty())
{
@@ -79,35 +68,15 @@
}
if (StringHelper::equalsIgnoreCase(sArg,
- L"TRACE", L"trace")) {
+ LOG4CXX_STR("TRACE"), LOG4CXX_STR("trace"))) {
return getTrace();
}
if (StringHelper::equalsIgnoreCase(sArg,
- L"LETHAL", L"lethal")) {
+ LOG4CXX_STR("LETHAL"), LOG4CXX_STR("lethal"))) {
return getLethal();
}
return Level::toLevel(sArg, defaultLevel);
}
-#endif
-
-const LevelPtr& XLevel::toLevel(const std::string& sArg, const LevelPtr& defaultLevel)
-{
- if (sArg.empty())
- {
- return defaultLevel;
- }
- if (StringHelper::equalsIgnoreCase(sArg,
- "TRACE", "trace")) {
- return getTrace();
- }
-
- if (StringHelper::equalsIgnoreCase(sArg,
- "LETHAL", "lethal")) {
- return getLethal();
- }
-
- return Level::toLevel(sArg, defaultLevel);
-}
Modified: logging/log4cxx/trunk/src/test/cpp/xml/xlevel.h
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/xml/xlevel.h?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/xml/xlevel.h (original)
+++ logging/log4cxx/trunk/src/test/cpp/xml/xlevel.h Thu Dec 20 18:52:29 2007
@@ -30,34 +30,29 @@
LETHAL_INT = Level::FATAL_INT + 1
};
- static const LevelPtr& getTrace();
- static const LevelPtr& getLethal();
+ static LevelPtr getTrace();
+ static LevelPtr getLethal();
- static const LevelPtr TRACE;
- static const LevelPtr LETHAL;
- XLevel(int level, const logchar* name, int syslogEquivalent);
+ XLevel(int level, const LogString& name, int syslogEquivalent);
/**
Convert the string passed as argument to a level. If the
conversion fails, then this method returns #DEBUG.
*/
- static const LevelPtr& toLevel(const std::string& sArg);
-#if LOG4CXX_HAS_WCHAR_T
- static const LevelPtr& toLevel(const std::wstring& sArg);
-#endif
+ static LevelPtr toLevelLS(const LogString& sArg);
/**
Convert an integer passed as argument to a level. If the
conversion fails, then this method returns #DEBUG.
*/
- static const LevelPtr& toLevel(int val);
+ static LevelPtr toLevel(int val);
/**
Convert an integer passed as argument to a level. If the
conversion fails, then this method returns the specified default.
*/
- static const LevelPtr& toLevel(int val, const LevelPtr& defaultLevel);
+ static LevelPtr toLevel(int val, const LevelPtr& defaultLevel);
/**
@@ -65,11 +60,7 @@
conversion fails, then this method returns the value of
<code>defaultLevel</code>.
*/
- static const LevelPtr& toLevel(const std::string& sArg,
+ static LevelPtr toLevelLS(const LogString& sArg,
const LevelPtr& defaultLevel);
-#if LOG4CXX_HAS_WCHAR_T
- static const LevelPtr& toLevel(const std::wstring& sArg,
- const LevelPtr& defaultLevel);
-#endif
};
}