blob: b7d6bdde98f9ddc43b9a83efbfb2e7f44cb20c1b [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());
Alex Vakulenko05d29042015-01-13 09:39:25 -080015 EXPECT_EQ("%22http%3A%2F%2Fsample%2Fpath%2F0014.html+%22", encoded);
Alex Vakulenkoad93c042014-08-20 15:47:36 -070016 EXPECT_EQ(test, UrlDecode(encoded.c_str()));
17
18 test = "\"http://sample/path/0014.html \"";
19 encoded = UrlEncode(test.c_str(), false);
Alex Vakulenko05d29042015-01-13 09:39:25 -080020 EXPECT_EQ("%22http%3A%2F%2Fsample%2Fpath%2F0014.html%20%22", encoded);
Alex Vakulenkoad93c042014-08-20 15:47:36 -070021 EXPECT_EQ(test, UrlDecode(encoded.c_str()));
22}
23
24TEST(data_encoding, WebParamsEncoding) {
Alex Vakulenko05d29042015-01-13 09:39:25 -080025 std::string encoded =
26 WebParamsEncode({{"q", "test"}, {"path", "/usr/bin"}, {"#", "%"}});
Alex Vakulenkoad93c042014-08-20 15:47:36 -070027 EXPECT_EQ("q=test&path=%2Fusr%2Fbin&%23=%25", encoded);
28
29 auto params = WebParamsDecode(encoded);
30 EXPECT_EQ(3, params.size());
31 EXPECT_EQ("q", params[0].first);
32 EXPECT_EQ("test", params[0].second);
33 EXPECT_EQ("path", params[1].first);
34 EXPECT_EQ("/usr/bin", params[1].second);
35 EXPECT_EQ("#", params[2].first);
36 EXPECT_EQ("%", params[2].second);
37}
38
39} // namespace data_encoding
40} // namespace chromeos