1 #include <msp/http/header.h>
2 #include <msp/test/test.h>
7 class HttpHeaderTests: public Test::RegisteredTest<HttpHeaderTests>
12 static const char *get_name() { return "Http::Header"; }
16 void list_of_values();
17 void key_value_list();
18 void value_with_attributes();
19 void list_with_attributes();
23 HttpHeaderTests::HttpHeaderTests()
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");
33 void HttpHeaderTests::single_value()
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());
41 void HttpHeaderTests::list_of_values()
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");
50 void HttpHeaderTests::key_value_list()
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");
62 void HttpHeaderTests::value_with_attributes()
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");
73 void HttpHeaderTests::list_with_attributes()
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");
87 void HttpHeaderTests::quoted_values()
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 ");