]> git.tdb.fi Git - libs/net.git/blob - tests/http_header.cpp
Add a dynamic receiver class for more flexible packet handling
[libs/net.git] / tests / http_header.cpp
1 #include <msp/http/header.h>
2 #include <msp/test/test.h>
3
4 using namespace std;
5 using namespace Msp;
6
7 class HttpHeaderTests: public Test::RegisteredTest<HttpHeaderTests>
8 {
9 public:
10         HttpHeaderTests();
11
12         static const char *get_name() { return "Http::Header"; }
13
14 private:
15         void single_value();
16         void list_of_values();
17         void key_value_list();
18         void value_with_attributes();
19         void list_with_attributes();
20         void quoted_values();
21 };
22
23 HttpHeaderTests::HttpHeaderTests()
24 {
25         add(&HttpHeaderTests::single_value, "Single value");
26         add(&HttpHeaderTests::list_of_values, "List");
27         add(&HttpHeaderTests::key_value_list, "Key-value list");
28         add(&HttpHeaderTests::value_with_attributes, "Value with attributes");
29         add(&HttpHeaderTests::list_with_attributes, "List with attributes");
30         add(&HttpHeaderTests::quoted_values, "Quoted values");
31 }
32
33 void HttpHeaderTests::single_value()
34 {
35         Http::Header header("test", "1;2 , 3 ", Http::Header::SINGLE_VALUE);
36         EXPECT_EQUAL(header.values.size(), 1);
37         EXPECT_EQUAL(header.values.front().value, "1;2 , 3");
38         EXPECT(header.values.front().parameters.empty());
39 }
40
41 void HttpHeaderTests::list_of_values()
42 {
43         Http::Header header("test", "1;2 , 3 ", Http::Header::LIST);
44         EXPECT_EQUAL(header.values.size(), 3);
45         EXPECT_EQUAL(header.values[0].value, "1");
46         EXPECT_EQUAL(header.values[1].value, "2");
47         EXPECT_EQUAL(header.values[2].value, "3");
48 }
49
50 void HttpHeaderTests::key_value_list()
51 {
52         Http::Header header("test", "a=1; b = 2 ,c=3 ", Http::Header::KEY_VALUE_LIST);
53         EXPECT_EQUAL(header.values.size(), 1);
54         EXPECT_EQUAL(header.values.front().parameters.count("a"), 1);
55         EXPECT_EQUAL(header.values.front().parameters["a"], "1");
56         EXPECT_EQUAL(header.values.front().parameters.count("b"), 1);
57         EXPECT_EQUAL(header.values.front().parameters["b"], "2");
58         EXPECT_EQUAL(header.values.front().parameters.count("c"), 1);
59         EXPECT_EQUAL(header.values.front().parameters["c"], "3");
60 }
61
62 void HttpHeaderTests::value_with_attributes()
63 {
64         Http::Header header("test", "X;a=1, 2 ; b=3 ", Http::Header::VALUE_WITH_ATTRIBUTES);
65         EXPECT_EQUAL(header.values.size(), 1);
66         EXPECT_EQUAL(header.values.front().value, "X");
67         EXPECT_EQUAL(header.values.front().parameters.count("a"), 1);
68         EXPECT_EQUAL(header.values.front().parameters["a"], "1, 2");
69         EXPECT_EQUAL(header.values.front().parameters.count("b"), 1);
70         EXPECT_EQUAL(header.values.front().parameters["b"], "3");
71 }
72
73 void HttpHeaderTests::list_with_attributes()
74 {
75         Http::Header header("test", "X;a= 1;b= 2 ,Y ; c=3 ", Http::Header::LIST_WITH_ATTRIBUTES);
76         EXPECT_EQUAL(header.values.size(), 2);
77         EXPECT_EQUAL(header.values[0].value, "X");
78         EXPECT_EQUAL(header.values[0].parameters.count("a"), 1);
79         EXPECT_EQUAL(header.values[0].parameters["a"], "1");
80         EXPECT_EQUAL(header.values[0].parameters.count("b"), 1);
81         EXPECT_EQUAL(header.values[0].parameters["b"], "2");
82         EXPECT_EQUAL(header.values[1].value, "Y");
83         EXPECT_EQUAL(header.values[1].parameters.count("c"), 1);
84         EXPECT_EQUAL(header.values[1].parameters["c"], "3");
85 }
86
87 void HttpHeaderTests::quoted_values()
88 {
89         Http::Header header("test", "X;a= 1;b=\" ;2, \",Y ; c=\"3 \" ", Http::Header::LIST_WITH_ATTRIBUTES);
90         EXPECT_EQUAL(header.values.size(), 2);
91         EXPECT_EQUAL(header.values[0].value, "X");
92         EXPECT_EQUAL(header.values[0].parameters.count("a"), 1);
93         EXPECT_EQUAL(header.values[0].parameters["a"], "1");
94         EXPECT_EQUAL(header.values[0].parameters.count("b"), 1);
95         EXPECT_EQUAL(header.values[0].parameters["b"], " ;2, ");
96         EXPECT_EQUAL(header.values[1].value, "Y");
97         EXPECT_EQUAL(header.values[1].parameters.count("c"), 1);
98         EXPECT_EQUAL(header.values[1].parameters["c"], "3 ");
99 }