diff options
Diffstat (limited to 'third_party/pcre-7.4/pcre_stringpiece_unittest.cc')
| -rw-r--r-- | third_party/pcre-7.4/pcre_stringpiece_unittest.cc | 151 | 
1 files changed, 151 insertions, 0 deletions
| diff --git a/third_party/pcre-7.4/pcre_stringpiece_unittest.cc b/third_party/pcre-7.4/pcre_stringpiece_unittest.cc new file mode 100644 index 0000000..1e821ab --- /dev/null +++ b/third_party/pcre-7.4/pcre_stringpiece_unittest.cc @@ -0,0 +1,151 @@ +// Copyright 2003 and onwards Google Inc. +// Author: Sanjay Ghemawat + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdio.h> +#include <map> +#include <algorithm>    // for make_pair + +#include "pcrecpp.h" +#include "pcre_stringpiece.h" + +// CHECK dies with a fatal error if condition is not true.  It is *not* +// controlled by NDEBUG, so the check will be executed regardless of +// compilation mode.  Therefore, it is safe to do things like: +//    CHECK(fp->Write(x) == 4) +#define CHECK(condition) do {                           \ +  if (!(condition)) {                                   \ +    fprintf(stderr, "%s:%d: Check failed: %s\n",        \ +            __FILE__, __LINE__, #condition);            \ +    exit(1);                                            \ +  }                                                     \ +} while (0) + +using std::map; +using std::make_pair; +using pcrecpp::StringPiece; + +static void CheckSTLComparator() { +  string s1("foo"); +  string s2("bar"); +  string s3("baz"); + +  StringPiece p1(s1); +  StringPiece p2(s2); +  StringPiece p3(s3); + +  typedef map<StringPiece, int> TestMap; +  TestMap map; + +  map.insert(make_pair(p1, 0)); +  map.insert(make_pair(p2, 1)); +  map.insert(make_pair(p3, 2)); +  CHECK(map.size() == 3); + +  TestMap::const_iterator iter = map.begin(); +  CHECK(iter->second == 1); +  ++iter; +  CHECK(iter->second == 2); +  ++iter; +  CHECK(iter->second == 0); +  ++iter; +  CHECK(iter == map.end()); + +  TestMap::iterator new_iter = map.find("zot"); +  CHECK(new_iter == map.end()); + +  new_iter = map.find("bar"); +  CHECK(new_iter != map.end()); + +  map.erase(new_iter); +  CHECK(map.size() == 2); + +  iter = map.begin(); +  CHECK(iter->second == 2); +  ++iter; +  CHECK(iter->second == 0); +  ++iter; +  CHECK(iter == map.end()); +} + +static void CheckComparisonOperators() { +#define CMP_Y(op, x, y)                                         \ +  CHECK( (StringPiece((x)) op StringPiece((y))));               \ +  CHECK( (StringPiece((x)).compare(StringPiece((y))) op 0)) + +#define CMP_N(op, x, y)                                         \ +  CHECK(!(StringPiece((x)) op StringPiece((y))));               \ +  CHECK(!(StringPiece((x)).compare(StringPiece((y))) op 0)) + +  CMP_Y(==, "",   ""); +  CMP_Y(==, "a",  "a"); +  CMP_Y(==, "aa", "aa"); +  CMP_N(==, "a",  ""); +  CMP_N(==, "",   "a"); +  CMP_N(==, "a",  "b"); +  CMP_N(==, "a",  "aa"); +  CMP_N(==, "aa", "a"); + +  CMP_N(!=, "",   ""); +  CMP_N(!=, "a",  "a"); +  CMP_N(!=, "aa", "aa"); +  CMP_Y(!=, "a",  ""); +  CMP_Y(!=, "",   "a"); +  CMP_Y(!=, "a",  "b"); +  CMP_Y(!=, "a",  "aa"); +  CMP_Y(!=, "aa", "a"); + +  CMP_Y(<, "a",  "b"); +  CMP_Y(<, "a",  "aa"); +  CMP_Y(<, "aa", "b"); +  CMP_Y(<, "aa", "bb"); +  CMP_N(<, "a",  "a"); +  CMP_N(<, "b",  "a"); +  CMP_N(<, "aa", "a"); +  CMP_N(<, "b",  "aa"); +  CMP_N(<, "bb", "aa"); + +  CMP_Y(<=, "a",  "a"); +  CMP_Y(<=, "a",  "b"); +  CMP_Y(<=, "a",  "aa"); +  CMP_Y(<=, "aa", "b"); +  CMP_Y(<=, "aa", "bb"); +  CMP_N(<=, "b",  "a"); +  CMP_N(<=, "aa", "a"); +  CMP_N(<=, "b",  "aa"); +  CMP_N(<=, "bb", "aa"); + +  CMP_N(>=, "a",  "b"); +  CMP_N(>=, "a",  "aa"); +  CMP_N(>=, "aa", "b"); +  CMP_N(>=, "aa", "bb"); +  CMP_Y(>=, "a",  "a"); +  CMP_Y(>=, "b",  "a"); +  CMP_Y(>=, "aa", "a"); +  CMP_Y(>=, "b",  "aa"); +  CMP_Y(>=, "bb", "aa"); + +  CMP_N(>, "a",  "a"); +  CMP_N(>, "a",  "b"); +  CMP_N(>, "a",  "aa"); +  CMP_N(>, "aa", "b"); +  CMP_N(>, "aa", "bb"); +  CMP_Y(>, "b",  "a"); +  CMP_Y(>, "aa", "a"); +  CMP_Y(>, "b",  "aa"); +  CMP_Y(>, "bb", "aa"); + +#undef CMP_Y +#undef CMP_N +} + +int main(int argc, char** argv) { +  CheckComparisonOperators(); +  CheckSTLComparator(); + +  printf("OK\n"); +  return 0; +} | 
