• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*=============================================================================
3     Copyright (c) 2017 Daniel James
4 
5     Use, modification and distribution is subject to the Boost Software
6     License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7     http://www.boost.org/LICENSE_1_0.txt)
8 =============================================================================*/
9 
10 #include <boost/detail/lightweight_test.hpp>
11 #include "utils.hpp"
12 
13 #include <iostream>
14 
linkify_test()15 void linkify_test()
16 {
17     using quickbook::detail::linkify;
18 
19     BOOST_TEST(linkify("abc", "link") == "<link linkend=\"link\">abc</link>");
20     BOOST_TEST(
21         linkify("<link linkend=\"something\">abc</link>", "link") ==
22         "<link linkend=\"something\">abc</link>");
23     BOOST_TEST(
24         linkify("abc <link linkend=\"something\">def</link>", "link") ==
25         "abc <link linkend=\"something\">def</link>");
26     BOOST_TEST(
27         linkify("<link linkend=\"something\">abc</link> def", "link") ==
28         "<link linkend=\"something\">abc</link> def");
29 }
30 
decode_string_test()31 void decode_string_test()
32 {
33     using quickbook::detail::decode_string;
34     BOOST_TEST_EQ(std::string("<A&B>"), decode_string("&lt;A&amp;B&gt;"));
35     BOOST_TEST_EQ(std::string("<A&B>"), decode_string("&lt;A&B&gt;"));
36     BOOST_TEST_EQ(std::string("a"), decode_string("&#97;"));
37     BOOST_TEST_EQ(std::string("OO"), decode_string("&#x4f;&#x4F;"));
38     // Unicode examples taken from wikipedia.
39     // https://en.wikipedia.org/wiki/UTF-8#Examples
40     BOOST_TEST_EQ(
41         std::string("\x24\xc2\xa2\xe2\x82\xAC\xF0\x90\x8D\x88"),
42         decode_string("&#x24;&#xA2;&#x20AC;&#x10348;"));
43 }
44 
encode_string_test()45 void encode_string_test()
46 {
47     using quickbook::detail::encode_string;
48     BOOST_TEST_EQ(std::string("&lt;A&amp;B&gt;"), encode_string("<A&B>"));
49 }
50 
escape_uri_test()51 void escape_uri_test()
52 {
53     using quickbook::detail::escape_uri;
54     using quickbook::detail::partially_escape_uri;
55 
56     BOOST_TEST_EQ(std::string("%2520%2525%25"), escape_uri("%20%25%"));
57     BOOST_TEST_EQ(std::string("%20%25%25"), partially_escape_uri("%20%25%"));
58 }
59 
main()60 int main()
61 {
62     linkify_test();
63     decode_string_test();
64     encode_string_test();
65     escape_uri_test();
66     return boost::report_errors();
67 }
68