blob: 954cc1b3fbcacd77ff2f6d8c97f7f025e224c1f4 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/* @test
2 * @bug 4238914
3 * @summary Tests that JNDI/COS naming parser supports the syntax
4 * defined in the new INS standard.
5 */
6
7import javax.naming.*;
8
9public class CNNameParser {
10
11 public static void main(String[] args) throws Exception {
12
13 NameParser parser = new com.sun.jndi.cosnaming.CNNameParser();
14
15 for (int i = 0; i < compounds.length; i++) {
16 checkCompound(parser, compounds[i], compoundComps[i]);
17 }
18 }
19
20 private static void checkName(Name name, String[] comps) throws Exception {
21 if (name.size() != comps.length) {
22 throw new Exception(
23 "test failed; incorrect component count in " + name + "; " +
24 "expecting " + comps.length + " got " + name.size());
25 }
26 for (int i = 0; i < name.size(); i++) {
27 if (!comps[i].equals(name.get(i))) {
28 throw new Exception (
29 "test failed; invalid component in " + name + "; " +
30 "expecting '" + comps[i] + "' got '" + name.get(i) + "'");
31 }
32 }
33 }
34
35 private static void checkCompound(NameParser parser,
36 String input, String[] comps) throws Exception {
37 checkName(parser.parse(input), comps);
38 }
39
40 private static final String[] compounds = {
41 "a/b/c",
42 "a.b/c.d",
43 "a",
44 ".",
45 "a.",
46 "c.d",
47 ".e",
48 "a/x\\/y\\/z/b",
49 "a\\.b.c\\.d/e.f",
50 "a/b\\\\/c",
51 "x\\\\.y",
52 "x\\.y",
53 "x.\\\\y",
54 "x.y\\\\",
55 "\\\\x.y",
56 "a.b\\.c/d"
57 };
58
59 private static final String[][] compoundComps = {
60 {"a", "b", "c"},
61 {"a.b", "c.d"},
62 {"a"},
63 {"."},
64 {"a"},
65 {"c.d"},
66 {".e"},
67 {"a", "x\\/y\\/z", "b"},
68 {"a\\.b.c\\.d", "e.f"},
69 {"a", "b\\\\", "c"},
70 {"x\\\\.y"},
71 {"x\\.y"},
72 {"x.\\\\y"},
73 {"x.y\\\\"},
74 {"\\\\x.y"},
75 {"a.b\\.c", "d"},
76 };
77}