]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/regex/regextest.cpp
Use UTF16 for text data object on Mac. Fixes #10902
[wxWidgets.git] / tests / regex / regextest.cpp
index c146caf6727cb040818019f7a4c635a70203a37c..822012b8e20b017fcb62ac2080f604bebec15e5f 100644 (file)
@@ -158,7 +158,7 @@ int wxWcscmp(const wchar_t* s1, const wchar_t* s2)
     if (nLen1 != nLen2)
         return nLen1 - nLen2;
 
-    return wxTmemcmp(s1, s2, nLen1);
+    return memcmp(s1, s2, nLen1*sizeof(wchar_t));
 }
 
 // convert a string from UTF8 to the internal encoding
@@ -170,16 +170,17 @@ wxString RegExTestCase::Conv(const char *str)
 
     if (!buf || wxWcscmp(wxConvCurrent->cWX2WC(buf), wstr) != 0)
         return convError();
-    else
-        return buf;
+
+    return buf;
 }
 
 // Parse flags
 //
 void RegExTestCase::parseFlags(const wxString& flags)
 {
-    for (const wxChar *p = flags; *p; p++) {
-        switch (*p) {
+    for ( wxString::const_iterator p = flags.begin(); p != flags.end(); ++p )
+    {
+        switch ( (*p).GetValue() ) {
             // noop
             case '-': break;
 
@@ -256,34 +257,43 @@ void RegExTestCase::doTest(int flavor)
         return;
 
     // check wxRegEx has correctly counted the number of subexpressions
-    failIf(m_expected.size() != re.GetMatchCount(),
-           wxString::Format(_T("GetMatchCount() == %d, expected %d"),
-                            re.GetMatchCount(), m_expected.size()));
-
-    wxString result;
-    size_t start, len;
+    wxString msg;
+    msg << _T("GetMatchCount() == ") << re.GetMatchCount()
+        << _T(", expected ") << m_expected.size();
+    failIf(m_expected.size() != re.GetMatchCount(), msg);
 
     for (size_t i = 0; i < m_expected.size(); i++) {
-        failIf(!re.GetMatch(&start, &len, i), wxString::Format(
-                _T("wxRegEx::GetMatch failed for match %d"), i));
+        wxString result;
+        size_t start, len;
+
+        msg.clear();
+        msg << _T("wxRegEx::GetMatch failed for match ") << i;
+        failIf(!re.GetMatch(&start, &len, i), msg);
 
         // m - check the match returns the strings given
         if (m_mode == 'm')
+        {
             if (start < INT_MAX)
                 result = m_data.substr(start, len);
             else
                 result = _T("");
+        }
 
         // i - check the match returns the offsets given
         else if (m_mode == 'i')
-            if (start < INT_MAX)
-                result = wxString::Format(_T("%d %d"), start, start + len - 1);
-            else
+        {
+            if (start > INT_MAX)
                 result = _T("-1 -1");
+            else if (start + len > 0)
+                result << start << _T(" ") << start + len - 1;
+            else
+                result << start << _T(" -1");
+        }
 
-        failIf(result != m_expected[i], wxString::Format(
-                _T("match(%d) == %s, expected == %s"), i,
-                quote(result).c_str(), quote(m_expected[i]).c_str()));
+        msg.clear();
+        msg << _T("match(") << i << _T(") == ") << quote(result)
+            << _T(", expected == ") << quote(m_expected[i]);
+        failIf(result != m_expected[i], msg);
     }
 }
 
@@ -318,7 +328,7 @@ wxString RegExTestCase::quote(const wxString& arg)
     wxString str;
 
     for (size_t i = 0; i < arg.length(); i++) {
-        wxUChar ch = arg[i];
+        wxChar ch = (wxChar)arg[i];
         const wxChar *p = wxStrchr(needEscape, ch);
 
         if (p)
@@ -326,7 +336,7 @@ wxString RegExTestCase::quote(const wxString& arg)
         else if (wxIscntrl(ch))
             str += wxString::Format(_T("\\%03o"), ch);
         else
-            str += ch;
+            str += (wxChar)ch;
     }
 
     return str.length() == arg.length() && str.find(' ') == wxString::npos ?