summaryrefslogtreecommitdiff
path: root/test/uri.cc
blob: edaef5ff3284b841823e1dcdfcffa1fe6b1cb284 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "uri.hh"

#include <gtest/gtest.h>
#include <string>

TEST(uri, empty) {
  std::string tmp;
  EXPECT_EQ("", uri::decode("", tmp).value_or("error"));
}

TEST(uri, example) {
  std::string tmp;
  EXPECT_EQ("?x=test", uri::decode("%3Fx%3Dtest", tmp).value_or("error"));
  EXPECT_EQ("?x=test", uri::decode("%3fx%3dtest", tmp).value_or("error"));
  EXPECT_EQ(
      "шеллы",
      uri::decode("%D1%88%D0%B5%D0%BB%D0%BB%D1%8B", tmp).value_or("error"));
  EXPECT_EQ("JavaScript_шеллы",
            uri::decode("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B", tmp)
                .value_or("error"));
  EXPECT_FALSE(uri::decode("%E0%A4%A", tmp).has_value());
  EXPECT_EQ("search+query (correct)",
            uri::decode("search+query%20%28correct%29", tmp).value_or("error"));
}

TEST(uri, bad) {
  std::string tmp;
  EXPECT_FALSE(uri::decode("%3Fx%3", tmp).has_value());
  EXPECT_FALSE(uri::decode("%3Fx%3test", tmp).has_value());
  EXPECT_FALSE(uri::decode("%%", tmp).has_value());
  EXPECT_FALSE(uri::decode("%D1", tmp).has_value());
}