/[pcre]/code/tags/pcre-6.7/pcrecpp_unittest.cc
ViewVC logotype

Diff of /code/tags/pcre-6.7/pcrecpp_unittest.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 87 by nigel, Sat Feb 24 21:41:21 2007 UTC revision 91 by nigel, Sat Feb 24 21:41:34 2007 UTC
# Line 32  Line 32 
32  // TODO: Test extractions for PartialMatch/Consume  // TODO: Test extractions for PartialMatch/Consume
33    
34  #include <stdio.h>  #include <stdio.h>
35    #include <cassert>
36  #include <vector>  #include <vector>
37  #include "config.h"  #include "config.h"
38  #include "pcrecpp.h"  #include "pcrecpp.h"
# Line 259  static void TestReplace() { Line 260  static void TestReplace() {
260        "aaaaa",        "aaaaa",
261        "bbaaaaa",        "bbaaaaa",
262        "bbabbabbabbabbabb" },        "bbabbabbabbabbabb" },
263        { "b*",
264          "bb",
265          "aa\naa\n",
266          "bbaa\naa\n",
267          "bbabbabb\nbbabbabb\nbb" },
268        { "b*",
269          "bb",
270          "aa\raa\r",
271          "bbaa\raa\r",
272          "bbabbabb\rbbabbabb\rbb" },
273        { "b*",
274          "bb",
275          "aa\r\naa\r\n",
276          "bbaa\r\naa\r\n",
277          "bbabbabb\r\nbbabbabb\r\nbb" },
278    #ifdef SUPPORT_UTF8
279        { "b*",
280          "bb",
281          "\xE3\x83\x9B\xE3\x83\xBC\xE3\x83\xA0\xE3\x81\xB8",   // utf8
282          "bb\xE3\x83\x9B\xE3\x83\xBC\xE3\x83\xA0\xE3\x81\xB8",
283          "bb\xE3\x83\x9B""bb""\xE3\x83\xBC""bb""\xE3\x83\xA0""bb""\xE3\x81\xB8""bb" },
284        { "b*",
285          "bb",
286          "\xE3\x83\x9B\r\n\xE3\x83\xBC\r\xE3\x83\xA0\n\xE3\x81\xB8\r\n",   // utf8
287          "bb\xE3\x83\x9B\r\n\xE3\x83\xBC\r\xE3\x83\xA0\n\xE3\x81\xB8\r\n",
288          ("bb\xE3\x83\x9B""bb\r\nbb""\xE3\x83\xBC""bb\rbb""\xE3\x83\xA0"
289           "bb\nbb""\xE3\x81\xB8""bb\r\nbb") },
290    #endif
291      { "", NULL, NULL, NULL, NULL }      { "", NULL, NULL, NULL, NULL }
292    };    };
293    
294    #ifdef SUPPORT_UTF8
295      const bool support_utf8 = true;
296    #else
297      const bool support_utf8 = false;
298    #endif
299    
300    for (const ReplaceTest *t = tests; t->original != NULL; ++t) {    for (const ReplaceTest *t = tests; t->original != NULL; ++t) {
301        RE re(t->regexp, RE_Options(PCRE_NEWLINE_CRLF).set_utf8(support_utf8));
302        assert(re.error().empty());
303      string one(t->original);      string one(t->original);
304      CHECK(RE(t->regexp).Replace(t->rewrite, &one));      CHECK(re.Replace(t->rewrite, &one));
305      CHECK_EQ(one, t->single);      CHECK_EQ(one, t->single);
306      string all(t->original);      string all(t->original);
307      CHECK(RE(t->regexp).GlobalReplace(t->rewrite, &all) > 0);      CHECK(re.GlobalReplace(t->rewrite, &all) > 0);
308      CHECK_EQ(all, t->global);      CHECK_EQ(all, t->global);
309    }    }
310    
311      // One final test: test \r\n replacement when we're not in CRLF mode
312      {
313        RE re("b*", RE_Options(PCRE_NEWLINE_CR).set_utf8(support_utf8));
314        assert(re.error().empty());
315        string all("aa\r\naa\r\n");
316        CHECK(re.GlobalReplace("bb", &all) > 0);
317        CHECK_EQ(all, string("bbabbabb\rbb\nbbabbabb\rbb\nbb"));
318      }
319      {
320        RE re("b*", RE_Options(PCRE_NEWLINE_LF).set_utf8(support_utf8));
321        assert(re.error().empty());
322        string all("aa\r\naa\r\n");
323        CHECK(re.GlobalReplace("bb", &all) > 0);
324        CHECK_EQ(all, string("bbabbabb\rbb\nbbabbabb\rbb\nbb"));
325      }
326      // TODO: test what happens when no PCRE_NEWLINE_* flag is set.
327      //       Alas, the answer depends on how pcre was compiled.
328  }  }
329    
330  static void TestExtract() {  static void TestExtract() {

Legend:
Removed from v.87  
changed lines
  Added in v.91

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12