summaryrefslogtreecommitdiff
path: root/graphics/asymptote/LspCpp/third_party/uri/test/uri_encoding_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/LspCpp/third_party/uri/test/uri_encoding_test.cpp')
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/test/uri_encoding_test.cpp147
1 files changed, 147 insertions, 0 deletions
diff --git a/graphics/asymptote/LspCpp/third_party/uri/test/uri_encoding_test.cpp b/graphics/asymptote/LspCpp/third_party/uri/test/uri_encoding_test.cpp
new file mode 100644
index 0000000000..47bb4fdd43
--- /dev/null
+++ b/graphics/asymptote/LspCpp/third_party/uri/test/uri_encoding_test.cpp
@@ -0,0 +1,147 @@
+// Copyright (c) Glyn Matthews 2011-2016.
+// Copyright 2012 Google, Inc.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#include <gtest/gtest.h>
+#include <network/uri.hpp>
+#include <iterator>
+
+
+TEST(uri_encoding_test, encode_user_info_iterator) {
+ const std::string unencoded("!#$&'()*+,/:;=?@[]");
+ std::string instance;
+ network::uri::encode_user_info(std::begin(unencoded), std::end(unencoded),
+ std::back_inserter(instance));
+ ASSERT_EQ("%21%23%24%26%27%28%29%2A%2B%2C%2F:%3B%3D%3F%40%5B%5D", instance);
+}
+
+TEST(uri_encoding_test, encode_host_iterator) {
+ const std::string unencoded("!#$&'()*+,/:;=?@[]");
+ std::string instance;
+ network::uri::encode_host(std::begin(unencoded), std::end(unencoded),
+ std::back_inserter(instance));
+ ASSERT_EQ("%21%23%24%26%27%28%29%2A%2B%2C%2F:%3B%3D%3F%40[]", instance);
+}
+
+TEST(uri_encoding_test, encode_ipv6_host) {
+ const std::string unencoded("[::1]");
+ std::string instance;
+ network::uri::encode_host(std::begin(unencoded), std::end(unencoded),
+ std::back_inserter(instance));
+ ASSERT_EQ("[::1]", instance);
+}
+
+TEST(uri_encoding_test, encode_port_iterator) {
+ const std::string unencoded("!#$&'()*+,/:;=?@[]");
+ std::string instance;
+ network::uri::encode_port(std::begin(unencoded), std::end(unencoded),
+ std::back_inserter(instance));
+ ASSERT_EQ("%21%23%24%26%27%28%29%2A%2B%2C%2F%3A%3B%3D%3F%40%5B%5D", instance);
+}
+
+TEST(uri_encoding_test, encode_path_iterator) {
+ const std::string unencoded("!#$&'()*+,/:;=?@[]");
+ std::string instance;
+ network::uri::encode_path(std::begin(unencoded), std::end(unencoded),
+ std::back_inserter(instance));
+ ASSERT_EQ("%21%23%24%26%27%28%29%2A%2B%2C/%3A;=%3F@%5B%5D", instance);
+}
+
+TEST(uri_encoding_test, encode_query_component_iterator) {
+ const std::string unencoded("!#$&'()*+,/:;=?@[]");
+ std::string instance;
+ network::uri::encode_query_component(
+ std::begin(unencoded), std::end(unencoded), std::back_inserter(instance));
+ ASSERT_EQ("%21%23%24%26%27%28%29%2A%2B%2C/%3A%3B%3D?%40%5B%5D", instance);
+}
+
+TEST(uri_encoding_test, encode_fragment_iterator) {
+ const std::string unencoded("!#$&'()*+,/:;=?@[]");
+ std::string instance;
+ network::uri::encode_fragment(
+ std::begin(unencoded), std::end(unencoded), std::back_inserter(instance));
+ ASSERT_EQ("%21%23%24&%27%28%29%2A%2B%2C/%3A;=%3F@%5B%5D", instance);
+}
+
+TEST(uri_encoding_test, decode_iterator) {
+ const std::string encoded("%21%23%24%26%27%28%29%2A%2B%2C%2F%3A%3B%3D%3F%40%5B%5D");
+ std::string instance;
+ network::uri::decode(std::begin(encoded), std::end(encoded),
+ std::back_inserter(instance));
+ ASSERT_EQ("!#$&'()*+,/:;=?@[]", instance);
+}
+
+TEST(uri_encoding_test, decode_iterator_error_1) {
+ const std::string encoded("%");
+ std::string instance;
+ ASSERT_THROW(network::uri::decode(std::begin(encoded), std::end(encoded),
+ std::back_inserter(instance)),
+ network::percent_decoding_error);
+}
+
+TEST(uri_encoding_test, decode_iterator_error_2) {
+ const std::string encoded("%2");
+ std::string instance;
+ ASSERT_THROW(network::uri::decode(std::begin(encoded), std::end(encoded),
+ std::back_inserter(instance)),
+ network::percent_decoding_error);
+}
+
+TEST(uri_encoding_test, decode_iterator_error_3) {
+ const std::string encoded("%%%");
+ std::string instance;
+ ASSERT_THROW(network::uri::decode(std::begin(encoded), std::end(encoded),
+ std::back_inserter(instance)),
+ network::percent_decoding_error);
+}
+
+TEST(uri_encoding_test, decode_iterator_error_4) {
+ const std::string encoded("%2%");
+ std::string instance;
+ ASSERT_THROW(network::uri::decode(std::begin(encoded), std::end(encoded),
+ std::back_inserter(instance)),
+ network::percent_decoding_error);
+}
+
+TEST(uri_encoding_test, decode_iterator_error_5) {
+ const std::string encoded("%G0");
+ std::string instance;
+ ASSERT_THROW(network::uri::decode(std::begin(encoded), std::end(encoded),
+ std::back_inserter(instance)),
+ network::percent_decoding_error);
+}
+
+TEST(uri_encoding_test, decode_iterator_error_6) {
+ const std::string encoded("%0G");
+ std::string instance;
+ ASSERT_THROW(network::uri::decode(std::begin(encoded), std::end(encoded),
+ std::back_inserter(instance)),
+ network::percent_decoding_error);
+}
+
+TEST(uri_encoding_test, decode_iterator_not_an_error_1) {
+ const std::string encoded("%20");
+ std::string instance;
+ ASSERT_NO_THROW(network::uri::decode(std::begin(encoded), std::end(encoded),
+ std::back_inserter(instance)));
+}
+
+TEST(uri_encoding_test, decode_iterator_not_an_error_2) {
+ const std::string encoded("%80");
+ std::string instance;
+ ASSERT_NO_THROW(network::uri::decode(std::begin(encoded), std::end(encoded),
+ std::back_inserter(instance)));
+}
+
+TEST(uri_encoding_test, decode_accepts_utf8) {
+ const std::string encoded("%EB%B2%95%EC%A0%95%EB%8F%99");
+ std::string instance;
+ ASSERT_NO_THROW(network::uri::decode(std::begin(encoded), std::end(encoded),
+ std::back_inserter(instance)));
+
+ // const std::string unencoded = "법정동";
+ const std::string unencoded = "\xEB\xB2\x95\xEC\xA0\x95\xEB\x8F\x99";
+ ASSERT_EQ(unencoded, instance);
+}