-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathconfig_parser_test.cc
93 lines (70 loc) · 2.52 KB
/
config_parser_test.cc
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "gtest/gtest.h"
#include "config_parser.h"
TEST(NginxConfigParserTest, SimpleConfig) {
NginxConfigParser parser;
NginxConfig out_config;
bool success = parser.Parse("example_config", &out_config);
EXPECT_TRUE(success);
}
// TESTING ToString function of NginxConfigStatement
TEST(NginxConfigTest, SimpleTest) {
NginxConfigStatement statement;
statement.tokens_.push_back("foo");
statement.tokens_.push_back("bar");
EXPECT_EQ("foo bar;\n", statement.ToString(0));
}
TEST(NginxConfigTest, BlockTest) {
NginxConfigStatement statement;
statement.tokens_.push_back("{");
statement.tokens_.push_back("foo");
statement.tokens_.push_back("bar");
statement.tokens_.push_back("}");
EXPECT_EQ("{ foo bar };\n", statement.ToString(0));
}
TEST(NginxConfigTest, EmptyTest) {
NginxConfigStatement statement;
EXPECT_EQ(";\n", statement.ToString(0));
}
// TESTING Fixture for NginxConfigs in string format
class NginxStringConfigTest : public ::testing::Test {
protected:
bool ParseString(const std::string config_string)
{
std::stringstream config_stream(config_string);
return parser_.Parse(&config_stream, &out_config_);
}
NginxConfigParser parser_;
NginxConfig out_config_;
};
TEST_F(NginxStringConfigTest, SimpleTest) {
EXPECT_TRUE(ParseString("server { port: 8080; }"));
}
TEST_F(NginxStringConfigTest, SimpleWrongTest) {
EXPECT_FALSE(ParseString("{ }"));
}
TEST_F(NginxStringConfigTest, MissingSemicolon) {
EXPECT_FALSE(ParseString("server { port: 8080 }"));
}
TEST_F(NginxStringConfigTest, UnbalancedCurlyBraces) {
EXPECT_FALSE(ParseString("server { port: 8080; "));
}
TEST_F(NginxStringConfigTest, UnbalancedCurlyBracesOpening) {
EXPECT_FALSE(ParseString("server port: 8080 }"));
}
TEST_F(NginxStringConfigTest, UnbalancedCurlyBracesNested) {
EXPECT_FALSE(ParseString("server { Location {false; port: 8080 }"));
}
TEST_F(NginxStringConfigTest, BlockAdvanced) {
EXPECT_TRUE(ParseString("server { port { 8080 ;}}"));
}
TEST_F(NginxStringConfigTest, Commenttest) {
EXPECT_TRUE(ParseString("server { port { 8080 ;}} # comment 1"));
EXPECT_EQ(1, out_config_.statements_.size());
}
TEST_F(NginxStringConfigTest, Statementstest) {
EXPECT_TRUE(ParseString("server { port { 8080 ;}}"));
EXPECT_EQ(1, out_config_.statements_.size());
EXPECT_EQ("server",out_config_.statements_[0]->tokens_[0]);
EXPECT_EQ("port",out_config_.statements_.at(0)->child_block_->statements_.at(0)->tokens_.at(0));
EXPECT_EQ("8080",out_config_.statements_.at(0)->child_block_->statements_.at(0)->child_block_->statements_.at(0)->tokens_.at(0));
}