Chromium Code Reviews| Index: net/http/http_util_unittest.cc |
| diff --git a/net/http/http_util_unittest.cc b/net/http/http_util_unittest.cc |
| index 8d0a219573be91063469068410d0af2e9bdd0c6d..77e49000ec93a0c89f7668b8d2d03642a9e53dc4 100644 |
| --- a/net/http/http_util_unittest.cc |
| +++ b/net/http/http_util_unittest.cc |
| @@ -1092,6 +1092,69 @@ TEST(HttpUtilTest, NameValuePairsIterator) { |
| &parser, false, true, std::string(), std::string())); |
| } |
| +TEST(HttpUtilTest, NameValuePairsIteratorOptionalValues) { |
| + std::string data = "alpha=1; beta=;cappa ; delta; e=; f=1"; |
| + // Test that the default parser requires values. |
| + HttpUtil::NameValuePairsIterator default_parser(data.begin(), data.end(), |
| + ';'); |
| + EXPECT_TRUE(default_parser.valid()); |
| + ASSERT_NO_FATAL_FAILURE( |
| + CheckNextNameValuePair(&default_parser, true, true, "alpha", "1")); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair(&default_parser, false, false, |
|
davidben
2015/07/15 22:21:06
Hrm. Is a GetNext failure not supposed to be fatal
estark
2015/07/16 00:07:01
Done.
|
| + "beta", std::string())); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair(&default_parser, false, false, |
| + "cappa", std::string())); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair(&default_parser, false, false, |
| + "delta", std::string())); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair(&default_parser, false, false, |
| + "e", std::string())); |
| + ASSERT_NO_FATAL_FAILURE( |
| + CheckNextNameValuePair(&default_parser, true, false, "f", "1")); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair(&default_parser, false, false, |
| + std::string(), std::string())); |
| + |
| + HttpUtil::NameValuePairsIterator values_required_parser( |
| + data.begin(), data.end(), ';', |
| + HttpUtil::NameValuePairsIterator::VALUES_NOT_OPTIONAL); |
| + EXPECT_TRUE(values_required_parser.valid()); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair(&values_required_parser, true, |
| + true, "alpha", "1")); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair(&values_required_parser, false, |
| + false, "beta", std::string())); |
|
davidben
2015/07/15 22:21:06
Ditto.
estark
2015/07/16 00:07:01
Done.
|
| + EXPECT_FALSE(values_required_parser.valid()); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair( |
| + &values_required_parser, false, false, "cappa", std::string())); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair( |
| + &values_required_parser, false, false, "delta", std::string())); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair(&values_required_parser, false, |
| + false, "e", std::string())); |
| + ASSERT_NO_FATAL_FAILURE( |
| + CheckNextNameValuePair(&values_required_parser, true, false, "f", "1")); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair( |
| + &values_required_parser, false, false, std::string(), std::string())); |
| + |
| + HttpUtil::NameValuePairsIterator parser( |
| + data.begin(), data.end(), ';', |
| + HttpUtil::NameValuePairsIterator::VALUES_OPTIONAL); |
| + EXPECT_TRUE(parser.valid()); |
| + |
| + ASSERT_NO_FATAL_FAILURE( |
| + CheckNextNameValuePair(&parser, true, true, "alpha", "1")); |
| + ASSERT_NO_FATAL_FAILURE( |
| + CheckNextNameValuePair(&parser, true, true, "beta", std::string())); |
| + ASSERT_NO_FATAL_FAILURE( |
| + CheckNextNameValuePair(&parser, true, true, "cappa", std::string())); |
| + ASSERT_NO_FATAL_FAILURE( |
| + CheckNextNameValuePair(&parser, true, true, "delta", std::string())); |
| + ASSERT_NO_FATAL_FAILURE( |
| + CheckNextNameValuePair(&parser, true, true, "e", std::string())); |
| + ASSERT_NO_FATAL_FAILURE( |
| + CheckNextNameValuePair(&parser, true, true, "f", "1")); |
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair(&parser, false, true, |
| + std::string(), std::string())); |
| + EXPECT_TRUE(parser.valid()); |
| +} |
| + |
| TEST(HttpUtilTest, NameValuePairsIteratorIllegalInputs) { |
| ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("alpha=1", "; beta")); |
| ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair(std::string(), "beta")); |