blob: 049ed3fe753ee84de61bf82ab03b985a7e55b570 (
plain) (
blame)
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
94
95
96
97
98
99
100
101
102
103
104
105
106
|
package com.yahoo.config.codegen;
import org.junit.Test;
import java.io.IOException;
import static com.yahoo.config.codegen.DefParserTest.assertLineFails;
import static com.yahoo.config.codegen.DefParserTest.createDefTemplate;
import static com.yahoo.config.codegen.DefParserTest.createParser;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertThat;
/**
* @author gjoranv
* @author musum
*/
public class DefParserNamespaceTest {
@Test
public void namespace_is_set_on_root_node() {
DefParser parser = createParser("version=1\nnamespace=myproject.config\n");
CNode root = parser.getTree();
assertThat(root.getNamespace(), is("myproject.config"));
}
@Test
public void package_is_used_as_namespace_when_no_namespace_is_given() {
String PACKAGE = "com.github.myproject";
DefParser parser = createParser("package=" + PACKAGE + "\n");
CNode root = parser.getTree();
assertThat(root.getNamespace(), is(PACKAGE));
}
@Test(expected = CodegenRuntimeException.class)
public void uppercase_chars_are_not_allowed() {
createParser("version=1\nnamespace=Foo\n").getTree();
}
@Test(expected = CodegenRuntimeException.class)
public void explicit_com_yahoo_prefix_is_not_allowed() {
createParser("version=1\n" +
"namespace=com.yahoo.myproject.config\n").getTree();
}
@Test
public void spaces_are_allowed_around_equals_sign() {
DefParser parser = createParser("version=1\nnamespace = myproject.config\n");
CNode root = parser.getTree();
assertThat(root.getNamespace(), is("myproject.config"));
}
@Test
public void empty_namespace_is_not_allowed() {
assertLineFails("namespace");
}
@Test
public void consecutive_dots_are_not_allowed() {
assertLineFails("namespace=a..b");
}
@Test
public void namespace_alters_def_md5() {
DefParser parser = createParser("version=1\n");
CNode root = parser.getTree();
parser = createParser("version=1\nnamespace=myproject.config\n");
CNode namespaceRoot = parser.getTree();
assertThat(root.defMd5, not(namespaceRoot.defMd5));
}
@Test
public void number_is_allowed_as_non_leading_char_in_namespace() throws IOException, DefParser.DefParserException {
StringBuilder sb = createDefTemplate();
String line = "namespace=a.b.c2\n";
sb.append(line);
createParser(sb.toString()).parse();
}
@Test
public void number_is_not_allowed_as_namespace_start_char() throws IOException, DefParser.DefParserException {
assertLineFails("namespace=2.a.b");
}
@Test
public void number_is_not_allowed_as_leading_char_in_namespace_token() throws IOException, DefParser.DefParserException {
assertLineFails("namespace=a.b.2c");
}
@Test
public void underscore_in_namespace_is_allowed() throws IOException, DefParser.DefParserException {
StringBuilder sb = createDefTemplate();
String line = "namespace=a_b.c\n";
sb.append(line);
createParser(sb.toString()).parse();
sb = createDefTemplate();
line = "namespace=a_b.c_d\n";
sb.append(line);
createParser(sb.toString()).parse();
}
}
|