curl and pkg-config / unittest for tests
[dueringa_WikiWalker.git] / test / CurlUrlCreatorTests.cpp
blob766cdc1f153f44d92c39c4cedea02fd9c57aa8a7
1 #include <algorithm>
3 #include <UnitTest++.h>
5 #include "../src/CurlUrlCreator.h"
7 SUITE(CurlUrlCreatorTests)
9 TEST(InitInstanceWithoutAddingParamsReturnsBaseUrl)
11 CurlUrlCreator cucu("http://example.com/get");
12 CHECK_EQUAL("http://example.com/get", cucu.buildUrl());
15 TEST(AddOneParameterPair)
17 CurlUrlCreator cucu("http://example.com/get");
18 cucu.addParameter("foo", "bar");
20 auto url = cucu.buildUrl();
21 CHECK(url.find("http://example.com/get?") == 0);
22 CHECK_EQUAL("http://example.com/get?foo=bar", url);
25 TEST(AddTwoParametersSeparateCalls)
27 CurlUrlCreator cucu("http://example.com/get");
28 cucu.addParameter("foo", "bar");
29 cucu.addParameter("baz", "nul");
30 auto url = cucu.buildUrl();
31 // or swapped
32 std::string expected = "http://example.com/get?foo=bar&baz=nul";
33 CHECK_EQUAL(expected.length(),
34 url.length());
35 CHECK(url.find("http://example.com/get?") == 0);
36 CHECK(url.find("foo=bar") != std::string::npos);
37 CHECK(url.find("baz=nul") != std::string::npos);
39 CHECK_EQUAL(1, std::count(url.begin(), url.end(), '&'));
42 TEST(AddTwoParametersChaining)
44 CurlUrlCreator cucu("http://example.com/get");
45 cucu.addParameter("foo", "bar")
46 .addParameter("baz", "nul");
47 auto url = cucu.buildUrl();
48 // or swapped
49 std::string expected = "http://example.com/get?foo=bar&baz=nul";
50 CHECK_EQUAL(expected.length(),
51 url.length());
52 CHECK(url.find("http://example.com/get?") == 0);
53 CHECK(url.find("foo=bar") != std::string::npos);
54 CHECK(url.find("baz=nul") != std::string::npos);
55 CHECK_EQUAL(1, std::count(url.begin(), url.end(), '&'));
58 TEST(AddParametersAgainOverwrites)
60 CurlUrlCreator cucu("http://example.com/get");
61 cucu.addParameter("foo", "bar");
62 cucu.addParameter("baz", "nul");
63 cucu.addParameter("zig", "zag");
64 cucu.addParameter("baz", "kling");
65 // or swapped
66 std::string expected = "http://example.com/get?foo=bar&baz=kling&zig=zag";
67 auto url = cucu.buildUrl();
68 CHECK_EQUAL(expected.length(),
69 url.length());
70 CHECK(url.find("http://example.com/get?") == 0);
71 CHECK(url.find("foo=bar") != std::string::npos);
72 CHECK(url.find("baz=kling") != std::string::npos);
73 CHECK(url.find("zig=zag") != std::string::npos);
74 CHECK_EQUAL(2, std::count(url.begin(), url.end(), '&'));
77 TEST(Reset_MustReturnBaseUrl)
79 CurlUrlCreator cucu("http://example.com/get");
80 cucu.addParameter("foo", "bar");
82 auto url = cucu.buildUrl();
83 CHECK(url.find("http://example.com/get") == 0);
84 CHECK("http://example.com/get" != url);
86 cucu.reset();
87 url = cucu.buildUrl();
88 CHECK(url.find("http://example.com/get") == 0);
89 CHECK_EQUAL("http://example.com/get", url);