]> git.tdb.fi Git - libs/net.git/blobdiff - tests/http_header.cpp
Add unit tests for some classes
[libs/net.git] / tests / http_header.cpp
diff --git a/tests/http_header.cpp b/tests/http_header.cpp
new file mode 100644 (file)
index 0000000..e123714
--- /dev/null
@@ -0,0 +1,99 @@
+#include <msp/http/header.h>
+#include <msp/test/test.h>
+
+using namespace std;
+using namespace Msp;
+
+class HttpHeaderTests: public Test::RegisteredTest<HttpHeaderTests>
+{
+public:
+       HttpHeaderTests();
+
+       static const char *get_name() { return "Http::Header"; }
+
+private:
+       void single_value();
+       void list_of_values();
+       void key_value_list();
+       void value_with_attributes();
+       void list_with_attributes();
+       void quoted_values();
+};
+
+HttpHeaderTests::HttpHeaderTests()
+{
+       add(&HttpHeaderTests::single_value, "Single value");
+       add(&HttpHeaderTests::list_of_values, "List");
+       add(&HttpHeaderTests::key_value_list, "Key-value list");
+       add(&HttpHeaderTests::value_with_attributes, "Value with attributes");
+       add(&HttpHeaderTests::list_with_attributes, "List with attributes");
+       add(&HttpHeaderTests::quoted_values, "Quoted values");
+}
+
+void HttpHeaderTests::single_value()
+{
+       Http::Header header("test", "1;2 , 3 ", Http::Header::SINGLE_VALUE);
+       EXPECT_EQUAL(header.values.size(), 1);
+       EXPECT_EQUAL(header.values.front().value, "1;2 , 3");
+       EXPECT(header.values.front().parameters.empty());
+}
+
+void HttpHeaderTests::list_of_values()
+{
+       Http::Header header("test", "1;2 , 3 ", Http::Header::LIST);
+       EXPECT_EQUAL(header.values.size(), 3);
+       EXPECT_EQUAL(header.values[0].value, "1");
+       EXPECT_EQUAL(header.values[1].value, "2");
+       EXPECT_EQUAL(header.values[2].value, "3");
+}
+
+void HttpHeaderTests::key_value_list()
+{
+       Http::Header header("test", "a=1; b = 2 ,c=3 ", Http::Header::KEY_VALUE_LIST);
+       EXPECT_EQUAL(header.values.size(), 1);
+       EXPECT_EQUAL(header.values.front().parameters.count("a"), 1);
+       EXPECT_EQUAL(header.values.front().parameters["a"], "1");
+       EXPECT_EQUAL(header.values.front().parameters.count("b"), 1);
+       EXPECT_EQUAL(header.values.front().parameters["b"], "2");
+       EXPECT_EQUAL(header.values.front().parameters.count("c"), 1);
+       EXPECT_EQUAL(header.values.front().parameters["c"], "3");
+}
+
+void HttpHeaderTests::value_with_attributes()
+{
+       Http::Header header("test", "X;a=1, 2 ; b=3 ", Http::Header::VALUE_WITH_ATTRIBUTES);
+       EXPECT_EQUAL(header.values.size(), 1);
+       EXPECT_EQUAL(header.values.front().value, "X");
+       EXPECT_EQUAL(header.values.front().parameters.count("a"), 1);
+       EXPECT_EQUAL(header.values.front().parameters["a"], "1, 2");
+       EXPECT_EQUAL(header.values.front().parameters.count("b"), 1);
+       EXPECT_EQUAL(header.values.front().parameters["b"], "3");
+}
+
+void HttpHeaderTests::list_with_attributes()
+{
+       Http::Header header("test", "X;a= 1;b= 2 ,Y ; c=3 ", Http::Header::LIST_WITH_ATTRIBUTES);
+       EXPECT_EQUAL(header.values.size(), 2);
+       EXPECT_EQUAL(header.values[0].value, "X");
+       EXPECT_EQUAL(header.values[0].parameters.count("a"), 1);
+       EXPECT_EQUAL(header.values[0].parameters["a"], "1");
+       EXPECT_EQUAL(header.values[0].parameters.count("b"), 1);
+       EXPECT_EQUAL(header.values[0].parameters["b"], "2");
+       EXPECT_EQUAL(header.values[1].value, "Y");
+       EXPECT_EQUAL(header.values[1].parameters.count("c"), 1);
+       EXPECT_EQUAL(header.values[1].parameters["c"], "3");
+}
+
+void HttpHeaderTests::quoted_values()
+{
+       Http::Header header("test", "X;a= 1;b=\" ;2, \",Y ; c=\"3 \" ", Http::Header::LIST_WITH_ATTRIBUTES);
+       EXPECT_EQUAL(header.values.size(), 2);
+       EXPECT_EQUAL(header.values[0].value, "X");
+       EXPECT_EQUAL(header.values[0].parameters.count("a"), 1);
+       EXPECT_EQUAL(header.values[0].parameters["a"], "1");
+       EXPECT_EQUAL(header.values[0].parameters.count("b"), 1);
+       EXPECT_EQUAL(header.values[0].parameters["b"], " ;2, ");
+       EXPECT_EQUAL(header.values[1].value, "Y");
+       EXPECT_EQUAL(header.values[1].parameters.count("c"), 1);
+       EXPECT_EQUAL(header.values[1].parameters["c"], "3 ");
+}