Index: third_party/protobuf/src/google/protobuf/io/tokenizer_unittest.cc |
diff --git a/third_party/protobuf/src/google/protobuf/io/tokenizer_unittest.cc b/third_party/protobuf/src/google/protobuf/io/tokenizer_unittest.cc |
index dbb5be4f601a77f2aa2ad7d52eebf71fd83d8ebf..20d50a2c2ff0deb0515f6942514514aa46ba1105 100644 |
--- a/third_party/protobuf/src/google/protobuf/io/tokenizer_unittest.cc |
+++ b/third_party/protobuf/src/google/protobuf/io/tokenizer_unittest.cc |
@@ -1,6 +1,6 @@ |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
-// http://code.google.com/p/protobuf/ |
+// https://developers.google.com/protocol-buffers/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
@@ -41,6 +41,7 @@ |
#include <google/protobuf/io/zero_copy_stream_impl.h> |
#include <google/protobuf/stubs/common.h> |
+#include <google/protobuf/stubs/logging.h> |
#include <google/protobuf/stubs/strutil.h> |
#include <google/protobuf/stubs/substitute.h> |
#include <google/protobuf/testing/googletest.h> |
@@ -411,12 +412,6 @@ MultiTokenCase kMultiTokenCases[] = { |
{ Tokenizer::TYPE_END , "" , 1, 3, 3 }, |
}}, |
- // Bytes with the high-order bit set should not be seen as control characters. |
- { "\300", { |
- { Tokenizer::TYPE_SYMBOL, "\300", 0, 0, 1 }, |
- { Tokenizer::TYPE_END , "" , 0, 1, 1 }, |
- }}, |
- |
// Test all whitespace chars |
{ "foo\n\t\r\v\fbar", { |
{ Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0, 3 }, |
@@ -741,7 +736,7 @@ TEST_F(TokenizerTest, ParseInteger) { |
EXPECT_EQ(0, ParseInteger("0x")); |
uint64 i; |
-#ifdef PROTOBUF_HASDEATH_TEST // death tests do not work on Windows yet |
+#ifdef PROTOBUF_HAS_DEATH_TEST // death tests do not work on Windows yet |
// Test invalid integers that will never be tokenized as integers. |
EXPECT_DEBUG_DEATH(Tokenizer::ParseInteger("zxy", kuint64max, &i), |
"passed text that could not have been tokenized as an integer"); |
@@ -753,7 +748,7 @@ TEST_F(TokenizerTest, ParseInteger) { |
"passed text that could not have been tokenized as an integer"); |
EXPECT_DEBUG_DEATH(Tokenizer::ParseInteger("-1", kuint64max, &i), |
"passed text that could not have been tokenized as an integer"); |
-#endif // PROTOBUF_HASDEATH_TEST |
+#endif // PROTOBUF_HAS_DEATH_TEST |
// Test overflows. |
EXPECT_TRUE (Tokenizer::ParseInteger("0", 0, &i)); |
@@ -796,7 +791,7 @@ TEST_F(TokenizerTest, ParseFloat) { |
EXPECT_EQ( 0.0, Tokenizer::ParseFloat("1e-9999999999999999999999999999")); |
EXPECT_EQ(HUGE_VAL, Tokenizer::ParseFloat("1e+9999999999999999999999999999")); |
-#ifdef PROTOBUF_HASDEATH_TEST // death tests do not work on Windows yet |
+#ifdef PROTOBUF_HAS_DEATH_TEST // death tests do not work on Windows yet |
// Test invalid integers that will never be tokenized as integers. |
EXPECT_DEBUG_DEATH(Tokenizer::ParseFloat("zxy"), |
"passed text that could not have been tokenized as a float"); |
@@ -804,7 +799,7 @@ TEST_F(TokenizerTest, ParseFloat) { |
"passed text that could not have been tokenized as a float"); |
EXPECT_DEBUG_DEATH(Tokenizer::ParseFloat("-1.0"), |
"passed text that could not have been tokenized as a float"); |
-#endif // PROTOBUF_HASDEATH_TEST |
+#endif // PROTOBUF_HAS_DEATH_TEST |
} |
TEST_F(TokenizerTest, ParseString) { |
@@ -843,10 +838,10 @@ TEST_F(TokenizerTest, ParseString) { |
EXPECT_EQ("u0", output); |
// Test invalid strings that will never be tokenized as strings. |
-#ifdef PROTOBUF_HASDEATH_TEST // death tests do not work on Windows yet |
+#ifdef PROTOBUF_HAS_DEATH_TEST // death tests do not work on Windows yet |
EXPECT_DEBUG_DEATH(Tokenizer::ParseString("", &output), |
"passed text that could not have been tokenized as a string"); |
-#endif // PROTOBUF_HASDEATH_TEST |
+#endif // PROTOBUF_HAS_DEATH_TEST |
} |
TEST_F(TokenizerTest, ParseStringAppend) { |
@@ -880,10 +875,12 @@ ErrorCase kErrorCases[] = { |
// String errors. |
{ "'\\l' foo", true, |
"0:2: Invalid escape sequence in string literal.\n" }, |
+ { "'\\X' foo", true, |
+ "0:2: Invalid escape sequence in string literal.\n" }, |
{ "'\\x' foo", true, |
"0:3: Expected hex digits for escape sequence.\n" }, |
{ "'foo", false, |
- "0:4: String literals cannot cross line boundaries.\n" }, |
+ "0:4: Unexpected end of string.\n" }, |
{ "'bar\nfoo", true, |
"0:4: String literals cannot cross line boundaries.\n" }, |
{ "'\\u01' foo", true, |
@@ -951,6 +948,10 @@ ErrorCase kErrorCases[] = { |
"0:0: Invalid control characters encountered in text.\n" }, |
{ string("\0\0foo", 5), true, |
"0:0: Invalid control characters encountered in text.\n" }, |
+ |
+ // Check error from high order bits set |
+ { "\300foo", true, |
+ "0:0: Interpreting non ascii codepoint 192.\n" }, |
}; |
TEST_2D(TokenizerTest, Errors, kErrorCases, kBlockSizes) { |