Skip to content

Commit 61b3da3

Browse files
authored
Fix #1231: Add missing separators to call hierarchy item labels (#1232)
Fix #1231 and add some test cases.
1 parent 6e4750f commit 61b3da3

2 files changed

Lines changed: 118 additions & 0 deletions

File tree

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2025 Advantest Europe GmbH (https://www.advantest.com/).
3+
* This program and the accompanying materials are made
4+
* available under the terms of the Eclipse Public License 2.0
5+
* which is available at https://www.eclipse.org/legal/epl-2.0/
6+
*
7+
* SPDX-License-Identifier: EPL-2.0
8+
*
9+
* Contributors:
10+
* Dietrich Travkin (Solunar GmbH) - Initial implementation
11+
*******************************************************************************/
12+
package org.eclipse.lsp4e.test.callhierarchy;
13+
14+
import static org.junit.Assert.*;
15+
16+
import org.eclipse.jface.viewers.StyledString;
17+
import org.eclipse.lsp4e.callhierarchy.CallHierarchyLabelProvider;
18+
import org.eclipse.lsp4e.callhierarchy.CallHierarchyViewTreeNode;
19+
import org.eclipse.lsp4e.test.utils.AbstractTest;
20+
import org.eclipse.lsp4j.CallHierarchyItem;
21+
import org.eclipse.swt.custom.StyleRange;
22+
import org.junit.BeforeClass;
23+
import org.junit.Test;
24+
25+
public class CallHierarchyLabelProviderTest extends AbstractTest {
26+
27+
private static CallHierarchyLabelProvider labelProvider = null;
28+
29+
@BeforeClass
30+
public static void setUp() {
31+
labelProvider = new CallHierarchyLabelProvider();
32+
}
33+
34+
@Test
35+
public void testSimpleText() {
36+
String name = "Some arbitrary name";
37+
38+
StyledString label = labelProvider.getStyledText(name);
39+
40+
assertEquals(name, label.getString());
41+
42+
StyledString expectedStyledText = new StyledString();
43+
expectedStyledText.append(name);
44+
45+
assertEqualStyles(expectedStyledText, label);
46+
}
47+
48+
@Test
49+
public void testCallHierarchyItemLabelWithSimpleName() {
50+
String name = "calledMethod()";
51+
52+
CallHierarchyItem callHierarchyItem = new CallHierarchyItem();
53+
callHierarchyItem.setName(name);
54+
CallHierarchyViewTreeNode node = new CallHierarchyViewTreeNode(callHierarchyItem);
55+
56+
StyledString label = labelProvider.getStyledText(node);
57+
58+
assertEquals(name, label.getString());
59+
60+
StyledString expectedStyledText = new StyledString();
61+
expectedStyledText.append(name);
62+
63+
assertEqualStyles(expectedStyledText, label);
64+
}
65+
66+
@Test
67+
public void testCallHierarchyItemLabelWithoutDetail() {
68+
String name = "doSomething(ClassName<T> param1, double param2) : String";
69+
70+
CallHierarchyItem callHierarchyItem = new CallHierarchyItem();
71+
callHierarchyItem.setName(name);
72+
CallHierarchyViewTreeNode node = new CallHierarchyViewTreeNode(callHierarchyItem);
73+
74+
StyledString label = labelProvider.getStyledText(node);
75+
76+
assertEquals(name, label.getString());
77+
78+
StyledString expectedStyledText = new StyledString();
79+
expectedStyledText.append("doSomething(ClassName<T> param1, double param2) ");
80+
expectedStyledText.append(": String", StyledString.DECORATIONS_STYLER);
81+
82+
assertEqualStyles(expectedStyledText, label);
83+
}
84+
85+
@Test
86+
public void testCompleteCallHierarchyItemLabel() {
87+
String name = "doSomething(int a, String b) : void";
88+
String detail = "org.eclipse.lsp4e.SomeClass";
89+
90+
CallHierarchyItem callHierarchyItem = new CallHierarchyItem();
91+
callHierarchyItem.setName(name);
92+
callHierarchyItem.setDetail(detail);
93+
CallHierarchyViewTreeNode node = new CallHierarchyViewTreeNode(callHierarchyItem);
94+
95+
StyledString label = labelProvider.getStyledText(node);
96+
97+
assertEquals("doSomething(int a, String b) : void - org.eclipse.lsp4e.SomeClass", label.getString());
98+
99+
StyledString expectedStyledText = new StyledString();
100+
expectedStyledText.append("doSomething(int a, String b) ");
101+
expectedStyledText.append(": void", StyledString.DECORATIONS_STYLER);
102+
expectedStyledText.append(" - org.eclipse.lsp4e.SomeClass", StyledString.QUALIFIER_STYLER);
103+
104+
assertEqualStyles(expectedStyledText, label);
105+
}
106+
107+
private void assertEqualStyles(StyledString expectedStyledText, StyledString actualStyledText) {
108+
assertEquals(expectedStyledText.getStyleRanges().length, actualStyledText.getStyleRanges().length);
109+
110+
for (int i = 0; i < expectedStyledText.getStyleRanges().length; i++) {
111+
StyleRange expected = expectedStyledText.getStyleRanges()[i];
112+
StyleRange actual = actualStyledText.getStyleRanges()[i];
113+
114+
assertEquals(expected, actual);
115+
}
116+
}
117+
}

org.eclipse.lsp4e/src/org/eclipse/lsp4e/callhierarchy/CallHierarchyLabelProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ protected void appendName(final StyledString styledString, final String name) {
8282
* the call container detail to append.
8383
*/
8484
protected void appendDetail(final StyledString styledString, final String detail) {
85+
styledString.append(" - ", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
8586
styledString.append(detail, StyledString.QUALIFIER_STYLER);
8687
}
8788
}

0 commit comments

Comments
 (0)