blob: ed6295ccdffd496fb1824f66938ffea632068ac4 [file] [log] [blame]
// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "buffet/data_encoding.h"
#include <gtest/gtest.h>
using namespace buffet::data_encoding; // NOLINT(build/namespaces)
TEST(data_encoding, UrlEncoding) {
std::string test = "\"http://sample/path/0014.html \"";
std::string encoded = UrlEncode(test.c_str());
EXPECT_EQ("%22http%3A%2F%2Fsample%2Fpath%2F0014.html+%22",
encoded);
EXPECT_EQ(test, UrlDecode(encoded.c_str()));
test = "\"http://sample/path/0014.html \"";
encoded = UrlEncode(test.c_str(), false);
EXPECT_EQ("%22http%3A%2F%2Fsample%2Fpath%2F0014.html%20%22",
encoded);
EXPECT_EQ(test, UrlDecode(encoded.c_str()));
}
TEST(data_encoding, WebParamsEncoding) {
std::string encoded = WebParamsEncode({{"q", "test"},
{"path", "/usr/bin"},
{"#", "%"}});
EXPECT_EQ("q=test&path=%2Fusr%2Fbin&%23=%25", encoded);
auto params = WebParamsDecode(encoded);
EXPECT_EQ(3, params.size());
EXPECT_EQ("q", params[0].first);
EXPECT_EQ("test", params[0].second);
EXPECT_EQ("path", params[1].first);
EXPECT_EQ("/usr/bin", params[1].second);
EXPECT_EQ("#", params[2].first);
EXPECT_EQ("%", params[2].second);
}