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
    };
 }