1b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov/**
211a89b445f3bde56bf07e6a0d04f0b0256dcb215Andrey Somov * Copyright (c) 2008, http://www.snakeyaml.org
3b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov *
4b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Licensed under the Apache License, Version 2.0 (the "License");
5b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * you may not use this file except in compliance with the License.
6b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * You may obtain a copy of the License at
7b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov *
8b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov *     http://www.apache.org/licenses/LICENSE-2.0
9b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov *
10b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Unless required by applicable law or agreed to in writing, software
11b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * distributed under the License is distributed on an "AS IS" BASIS,
12b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * See the License for the specific language governing permissions and
14b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * limitations under the License.
15b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov */
16b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovpackage org.yaml.snakeyaml.nodes;
17b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
18b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.net.URI;
19b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.net.URISyntaxException;
20b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
21b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport junit.framework.TestCase;
22b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
23b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovpublic class TagTest extends TestCase {
24b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
25b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    public void testCreate() {
26b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        try {
27b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            new Tag((String) null);
28b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            fail();
29b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        } catch (Exception e) {
30b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            assertEquals("Tag must be provided.", e.getMessage());
31b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        }
32b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        try {
33b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            new Tag("");
34b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            fail();
35b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        } catch (Exception e) {
36b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            assertEquals("Tag must not be empty.", e.getMessage());
37b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        }
38b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        try {
39b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            new Tag("!Dice ");
40b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            fail();
41b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        } catch (Exception e) {
42b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            assertEquals("Tag must not contain leading or trailing spaces.", e.getMessage());
43b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        }
44b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        Tag tag = new Tag(TagTest.class);
45b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertEquals(Tag.PREFIX + "org.yaml.snakeyaml.nodes.TagTest", tag.getValue());
46b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    }
47b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
48b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    public void testCreate2() {
49b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        try {
50b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            new Tag((Class<?>) null);
51b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            fail();
52b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        } catch (Exception e) {
53b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            assertEquals("Class for tag must be provided.", e.getMessage());
54b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        }
55b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    }
56b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
57b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    public void testGetClassName() {
58b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        Tag tag = new Tag(Tag.PREFIX + "org.yaml.snakeyaml.nodes.TagTest");
59b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertEquals("org.yaml.snakeyaml.nodes.TagTest", tag.getClassName());
60b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    }
61b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
62b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    public void testGetClassNameError() {
63b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        try {
64b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            Tag tag = new Tag("!TagTest");
65b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            tag.getClassName();
66b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            fail("Class name is only available for global tag");
67b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        } catch (Exception e) {
68b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            assertEquals("Invalid tag: !TagTest", e.getMessage());
69b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        }
70b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    }
71b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
72b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    public void testLength() {
73b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        String t = Tag.PREFIX + "org.yaml.snakeyaml.nodes.TagTest";
74b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        Tag tag = new Tag(t);
75b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertEquals(t.length(), tag.getLength());
76b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    }
77b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
78b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    public void testToString() {
79b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        Tag tag = new Tag("!car");
80b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertEquals("!car", tag.toString());
81b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    }
82b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
83b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    public void testUri1() {
84b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        Tag tag = new Tag("!Académico");
85b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertEquals("!Acad%C3%A9mico", tag.toString());
86b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    }
87b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
88b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    public void testUri2() {
89b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        Tag tag = new Tag("!ruby/object:Test::Module::Sub2");
90b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertEquals("!ruby/object:Test::Module::Sub2", tag.getValue());
91b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    }
92b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
93b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    public void testCompare() {
94b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        Tag tag = new Tag("!car");
95b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertEquals(0, tag.compareTo(new Tag("!car")));
96b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    }
97b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
98b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    public void testEqualsObject() {
99b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        Tag tag = new Tag("!car");
100b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertEquals(tag, tag);
101b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertEquals(tag, new Tag("!car"));
102b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertFalse(tag.equals(new Tag("!!str")));
103b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertFalse(tag.equals(null));
104b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        assertFalse(tag.equals(25));
105b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    }
106b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov}
107