Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / platform / network / HTTPParsersTest.cpp
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "HTTPParsers.h"
7
8 #include "wtf/MathExtras.h"
9 #include "wtf/text/AtomicString.h"
10
11 #include <gtest/gtest.h>
12
13 namespace WebCore {
14
15 TEST(HTTPParsersTest, ParseCacheControl)
16 {
17     CacheControlHeader header;
18
19     header = parseCacheControlDirectives("no-cache", AtomicString());
20     EXPECT_TRUE(header.parsed);
21     EXPECT_TRUE(header.containsNoCache);
22     EXPECT_FALSE(header.containsNoStore);
23     EXPECT_FALSE(header.containsMustRevalidate);
24     EXPECT_TRUE(std::isnan(header.maxAge));
25
26     header = parseCacheControlDirectives("no-cache no-store", AtomicString());
27     EXPECT_TRUE(header.parsed);
28     EXPECT_TRUE(header.containsNoCache);
29     EXPECT_FALSE(header.containsNoStore);
30     EXPECT_FALSE(header.containsMustRevalidate);
31     EXPECT_TRUE(std::isnan(header.maxAge));
32
33     header = parseCacheControlDirectives("no-store must-revalidate", AtomicString());
34     EXPECT_TRUE(header.parsed);
35     EXPECT_FALSE(header.containsNoCache);
36     EXPECT_TRUE(header.containsNoStore);
37     EXPECT_FALSE(header.containsMustRevalidate);
38     EXPECT_TRUE(std::isnan(header.maxAge));
39
40     header = parseCacheControlDirectives("max-age=0", AtomicString());
41     EXPECT_TRUE(header.parsed);
42     EXPECT_FALSE(header.containsNoCache);
43     EXPECT_FALSE(header.containsNoStore);
44     EXPECT_FALSE(header.containsMustRevalidate);
45     EXPECT_EQ(0.0, header.maxAge);
46
47     header = parseCacheControlDirectives("max-age", AtomicString());
48     EXPECT_TRUE(header.parsed);
49     EXPECT_FALSE(header.containsNoCache);
50     EXPECT_FALSE(header.containsNoStore);
51     EXPECT_FALSE(header.containsMustRevalidate);
52     EXPECT_TRUE(std::isnan(header.maxAge));
53
54     header = parseCacheControlDirectives("max-age=0 no-cache", AtomicString());
55     EXPECT_TRUE(header.parsed);
56     EXPECT_FALSE(header.containsNoCache);
57     EXPECT_FALSE(header.containsNoStore);
58     EXPECT_FALSE(header.containsMustRevalidate);
59     EXPECT_EQ(0.0, header.maxAge);
60
61     header = parseCacheControlDirectives("no-cache=foo", AtomicString());
62     EXPECT_TRUE(header.parsed);
63     EXPECT_FALSE(header.containsNoCache);
64     EXPECT_FALSE(header.containsNoStore);
65     EXPECT_FALSE(header.containsMustRevalidate);
66     EXPECT_TRUE(std::isnan(header.maxAge));
67
68     header = parseCacheControlDirectives("nonsense", AtomicString());
69     EXPECT_TRUE(header.parsed);
70     EXPECT_FALSE(header.containsNoCache);
71     EXPECT_FALSE(header.containsNoStore);
72     EXPECT_FALSE(header.containsMustRevalidate);
73     EXPECT_TRUE(std::isnan(header.maxAge));
74
75     header = parseCacheControlDirectives("\rno-cache\n\t\v\0\b", AtomicString());
76     EXPECT_TRUE(header.parsed);
77     EXPECT_TRUE(header.containsNoCache);
78     EXPECT_FALSE(header.containsNoStore);
79     EXPECT_FALSE(header.containsMustRevalidate);
80     EXPECT_TRUE(std::isnan(header.maxAge));
81
82     header = parseCacheControlDirectives("      no-cache       ", AtomicString());
83     EXPECT_TRUE(header.parsed);
84     EXPECT_TRUE(header.containsNoCache);
85     EXPECT_FALSE(header.containsNoStore);
86     EXPECT_FALSE(header.containsMustRevalidate);
87     EXPECT_TRUE(std::isnan(header.maxAge));
88
89     header = parseCacheControlDirectives(AtomicString(), "no-cache");
90     EXPECT_TRUE(header.parsed);
91     EXPECT_TRUE(header.containsNoCache);
92     EXPECT_FALSE(header.containsNoStore);
93     EXPECT_FALSE(header.containsMustRevalidate);
94     EXPECT_TRUE(std::isnan(header.maxAge));
95 }
96
97 } // namespace WebCore
98