Line data Source code
1 : // Copyright (c) 2011-2022 Made to Order Software Corp. All Rights Reserved
2 : //
3 : // https://snapwebsites.org/project/edhttp
4 : // contact@m2osw.com
5 : //
6 : // This program is free software: you can redistribute it and/or modify
7 : // it under the terms of the GNU General Public License as published by
8 : // the Free Software Foundation, either version 3 of the License, or
9 : // (at your option) any later version.
10 : //
11 : // This program is distributed in the hope that it will be useful,
12 : // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : // GNU General Public License for more details.
15 : //
16 : // You should have received a copy of the GNU General Public License
17 : // along with this program. If not, see <https://www.gnu.org/licenses/>.
18 :
19 : /** \file
20 : * \brief Verify the snap_uri class.
21 : *
22 : * This file implements tests to verify that the snap_uri
23 : * class functions as expected.
24 : */
25 :
26 : // self
27 : //
28 : #include "catch_main.h"
29 :
30 : // edhttp
31 : //
32 : #include <edhttp/uri.h>
33 :
34 :
35 :
36 6 : CATCH_TEST_CASE("uri", "[domain]")
37 : {
38 : // "normal" (canonicalized) URI
39 8 : CATCH_GIVEN("domain \"http://snap.website/\"")
40 : {
41 2 : edhttp::uri uri("http://snap.website/");
42 :
43 2 : CATCH_SECTION("verify object")
44 : {
45 1 : CATCH_REQUIRE(uri.domain() == "snap");
46 1 : CATCH_REQUIRE(uri.top_level_domain() == ".website");
47 : }
48 : }
49 :
50 : // without a '/' after domain
51 8 : CATCH_GIVEN("domain \"http://snap.website\"")
52 : {
53 2 : edhttp::uri uri("http://snap.website");
54 :
55 2 : CATCH_SECTION("verify object")
56 : {
57 1 : CATCH_REQUIRE(uri.domain() == "snap");
58 1 : CATCH_REQUIRE(uri.top_level_domain() == ".website");
59 : }
60 : }
61 :
62 : // with two slashes
63 8 : CATCH_GIVEN("domain \"http://snap.website//\"")
64 : {
65 2 : edhttp::uri uri("http://snap.website//");
66 :
67 2 : CATCH_SECTION("verify object")
68 : {
69 1 : CATCH_REQUIRE(uri.domain() == "snap");
70 1 : CATCH_REQUIRE(uri.top_level_domain() == ".website");
71 : }
72 : }
73 :
74 : // multiple slashes and a path
75 8 : CATCH_GIVEN("domain \"http://snap.website///and/a/path\"")
76 : {
77 2 : edhttp::uri uri("http://snap.website///and/a/path");
78 :
79 2 : CATCH_SECTION("verify object")
80 : {
81 1 : CATCH_REQUIRE(uri.domain() == "snap");
82 1 : CATCH_REQUIRE(uri.top_level_domain() == ".website");
83 1 : CATCH_REQUIRE(uri.path() == "and/a/path");
84 : }
85 : }
86 10 : }
87 :
88 :
89 : // vim: ts=4 sw=4 et
|