1/*******************************************************************************
2 * Copyright (c) 2009, 2015 Mountainminds GmbH & Co. KG and Contributors
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 *    Marc R. Hoffmann - initial API and implementation
10 *
11 *******************************************************************************/
12package org.jacoco.report;
13
14import static org.junit.Assert.assertEquals;
15
16import org.junit.Before;
17import org.junit.Test;
18
19/**
20 * Unit tests for {@link JavaNames}.
21 */
22public class JavaNamesTest {
23
24	private ILanguageNames names;
25
26	@Before
27	public void setup() {
28		names = new JavaNames();
29	}
30
31	@Test
32	public void testGetPackageName1() {
33		assertEquals("default", names.getPackageName(""));
34	}
35
36	@Test
37	public void testGetPackageName2() {
38		assertEquals("java.lang", names.getPackageName("java/lang"));
39	}
40
41	@Test
42	public void testGetClassName1() {
43		assertEquals("Main", names.getClassName("Main", null, null, null));
44	}
45
46	@Test
47	public void testGetClassName2() {
48		assertEquals("Object",
49				names.getClassName("java/lang/Object", null, null, null));
50	}
51
52	@Test
53	public void testGetClassName3() {
54		assertEquals("Map.Entry",
55				names.getClassName("java/util/Map$Entry", null, null, null));
56	}
57
58	@Test
59	public void testGetClassName4() {
60		assertEquals("Bar.new Object() {...}", names.getClassName(
61				"com/foo/Bar$1", null, "java/lang/Object", new String[0]));
62	}
63
64	@Test
65	public void testGetClassName5() {
66		assertEquals("Bar.new ISample() {...}", names.getClassName(
67				"com/foo/Bar$1", null, "java/lang/Object",
68				new String[] { "org/foo/ISample" }));
69	}
70
71	@Test
72	public void testGetClassName6() {
73		assertEquals("Bar.1",
74				names.getClassName("com/foo/Bar$1", null, null, null));
75	}
76
77	@Test
78	public void testGetClassName7() {
79		assertEquals("Strange.",
80				names.getClassName("com/foo/Strange$", null, null, null));
81	}
82
83	@Test
84	public void testGetQualifiedClassName1() {
85		assertEquals("Foo", names.getQualifiedClassName("Foo"));
86	}
87
88	@Test
89	public void testGetQualifiedClassName2() {
90		assertEquals("java.lang.Object",
91				names.getQualifiedClassName("java/lang/Object"));
92	}
93
94	@Test
95	public void testGetQualifiedClassName3() {
96		assertEquals("java.util.Map.Entry",
97				names.getQualifiedClassName("java/util/Map$Entry"));
98	}
99
100	@Test
101	public void testGetMethodName1() {
102		assertEquals("wait()",
103				names.getMethodName("java/lang/Object", "wait", "()V", null));
104	}
105
106	@Test
107	public void testGetMethodName2() {
108		assertEquals("remove(Object)",
109				names.getMethodName("java/util/Collection", "remove",
110						"(Ljava/lang/Object;)V", null));
111	}
112
113	@Test
114	public void testGetMethodName3() {
115		assertEquals("remove(int)",
116				names.getMethodName("java/util/List", "remove", "(I)V", null));
117	}
118
119	@Test
120	public void testGetMethodName4() {
121		assertEquals("add(int, Object)", names.getMethodName("java/util/List",
122				"add", "(ILjava/lang/Object;)V", null));
123	}
124
125	@Test
126	public void testGetMethodName5() {
127		assertEquals("sort(Object[])", names.getMethodName("java/util/Arrays",
128				"sort", "([Ljava/lang/Object;)V", null));
129	}
130
131	@Test
132	public void testGetMethodName6() {
133		assertEquals("Object()",
134				names.getMethodName("java/lang/Object", "<init>", "()V", null));
135	}
136
137	@Test
138	public void testGetMethodName7() {
139		assertEquals("static {...}", names.getMethodName(
140				"com/example/SomeClass", "<clinit>", "()V", null));
141	}
142
143	@Test
144	public void testGetMethodName8() {
145		assertEquals("update(Map.Entry)", names.getMethodName(
146				"com/example/SomeClass", "update", "(Ljava/util/Map$Entry;)V",
147				null));
148	}
149
150	@Test
151	public void testGetMethodName9() {
152		assertEquals("{...}", names.getMethodName("com/example/SomeClass$1",
153				"<init>", "()V", null));
154	}
155
156	@Test
157	public void testGetQualifiedMethodName() {
158		assertEquals("java.util.List.add(int, java.lang.Object)",
159				names.getQualifiedMethodName("java/util/List", "add",
160						"(ILjava/lang/Object;)V", null));
161	}
162
163}
164