- add sources.
[platform/framework/web/crosswalk.git] / src / third_party / protobuf / src / google / protobuf / stubs / structurally_valid_unittest.cc
1 // Copyright 2008 Google Inc. All Rights Reserved.
2 // Author: xpeng@google.com (Peter Peng)
3
4 #include <google/protobuf/stubs/common.h>
5 #include <gtest/gtest.h>
6
7 namespace google {
8 namespace protobuf {
9 namespace internal {
10 namespace {
11
12 TEST(StructurallyValidTest, ValidUTF8String) {
13   // On GCC, this string can be written as:
14   //   "abcd 1234 - \u2014\u2013\u2212"
15   // MSVC seems to interpret \u differently.
16   string valid_str("abcd 1234 - \342\200\224\342\200\223\342\210\222 - xyz789");
17   EXPECT_TRUE(IsStructurallyValidUTF8(valid_str.data(),
18                                       valid_str.size()));
19   // Additional check for pointer alignment
20   for (int i = 1; i < 8; ++i) {
21     EXPECT_TRUE(IsStructurallyValidUTF8(valid_str.data() + i,
22                                         valid_str.size() - i));
23   }
24 }
25
26 TEST(StructurallyValidTest, InvalidUTF8String) {
27   const string invalid_str("abcd\xA0\xB0\xA0\xB0\xA0\xB0 - xyz789");
28   EXPECT_FALSE(IsStructurallyValidUTF8(invalid_str.data(),
29                                        invalid_str.size()));
30   // Additional check for pointer alignment
31   for (int i = 1; i < 8; ++i) {
32     EXPECT_FALSE(IsStructurallyValidUTF8(invalid_str.data() + i,
33                                          invalid_str.size() - i));
34   }
35 }
36
37 }  // namespace
38 }  // namespace internal
39 }  // namespace protobuf
40 }  // namespace google