blob: a09b09ed9afa5f668cee5f8637dda87cb13873cd [file] [log] [blame]
Alex Vakulenkoad93c042014-08-20 15:47:36 -07001// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <chromeos/data_encoding.h>
6
7#include <gtest/gtest.h>
8
9namespace chromeos {
10namespace data_encoding {
11
12TEST(data_encoding, UrlEncoding) {
13 std::string test = "\"http://sample/path/0014.html \"";
14 std::string encoded = UrlEncode(test.c_str());
15 EXPECT_EQ("%22http%3A%2F%2Fsample%2Fpath%2F0014.html+%22",
16 encoded);
17 EXPECT_EQ(test, UrlDecode(encoded.c_str()));
18
19 test = "\"http://sample/path/0014.html \"";
20 encoded = UrlEncode(test.c_str(), false);
21 EXPECT_EQ("%22http%3A%2F%2Fsample%2Fpath%2F0014.html%20%22",
22 encoded);
23 EXPECT_EQ(test, UrlDecode(encoded.c_str()));
24}
25
26TEST(data_encoding, WebParamsEncoding) {
27 std::string encoded = WebParamsEncode({{"q", "test"},
28 {"path", "/usr/bin"},
29 {"#", "%"}});
30 EXPECT_EQ("q=test&path=%2Fusr%2Fbin&%23=%25", encoded);
31
32 auto params = WebParamsDecode(encoded);
33 EXPECT_EQ(3, params.size());
34 EXPECT_EQ("q", params[0].first);
35 EXPECT_EQ("test", params[0].second);
36 EXPECT_EQ("path", params[1].first);
37 EXPECT_EQ("/usr/bin", params[1].second);
38 EXPECT_EQ("#", params[2].first);
39 EXPECT_EQ("%", params[2].second);
40}
41
42} // namespace data_encoding
43} // namespace chromeos