Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Khouzam2019-06-07 15:05:36 +0000
committerMatthew Khouzam2019-06-08 01:17:31 +0000
commit5d802179a9f92ab5f683d243c07edf94d004155f (patch)
treee19eabcb5a510de07234dc24ab4ce68603bfa907
parent908bea5a636b4e10bb64e5c1710c6144fb0a834e (diff)
downloadorg.eclipse.tracecompass-5d802179a9f92ab5f683d243c07edf94d004155f.tar.gz
org.eclipse.tracecompass-5d802179a9f92ab5f683d243c07edf94d004155f.tar.xz
org.eclipse.tracecompass-5d802179a9f92ab5f683d243c07edf94d004155f.zip
tmf.ui: add ToolTipString tests
Fix a bug with Null values. Bug 548063 Change-Id: Ia35825b9f278a1460b3fddaff58a7185062ca5c9 Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com> Reviewed-on: https://git.eclipse.org/r/143556 Tested-by: CI Bot Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com> Tested-by: Patrick Tasse <patrick.tasse@gmail.com> (cherry picked from commit 68dc930bb099d7f28decfdf1484fe6b02fc65893) Reviewed-on: https://git.eclipse.org/r/143570
-rw-r--r--tmf/org.eclipse.tracecompass.tmf.ui.tests/META-INF/MANIFEST.MF1
-rw-r--r--tmf/org.eclipse.tracecompass.tmf.ui.tests/src/org/eclipse/tracecompass/tmf/ui/tests/viewers/ToolTipStringTest.java137
-rw-r--r--tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/TmfAbstractToolTipHandler.java27
3 files changed, 153 insertions, 12 deletions
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.tests/META-INF/MANIFEST.MF b/tmf/org.eclipse.tracecompass.tmf.ui.tests/META-INF/MANIFEST.MF
index 0efb10fe8a..95081650aa 100644
--- a/tmf/org.eclipse.tracecompass.tmf.ui.tests/META-INF/MANIFEST.MF
+++ b/tmf/org.eclipse.tracecompass.tmf.ui.tests/META-INF/MANIFEST.MF
@@ -35,6 +35,7 @@ Export-Package: org.eclipse.tracecompass.tmf.ui.tests,
org.eclipse.tracecompass.tmf.ui.tests.uml2sd.load,
org.eclipse.tracecompass.tmf.ui.tests.uml2sd.trace,
org.eclipse.tracecompass.tmf.ui.tests.util;x-internal:=true,
+ org.eclipse.tracecompass.tmf.ui.tests.viewers,
org.eclipse.tracecompass.tmf.ui.tests.views,
org.eclipse.tracecompass.tmf.ui.tests.views.uml2sd.dialogs,
org.eclipse.tracecompass.tmf.ui.tests.views.uml2sd.load,
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.tests/src/org/eclipse/tracecompass/tmf/ui/tests/viewers/ToolTipStringTest.java b/tmf/org.eclipse.tracecompass.tmf.ui.tests/src/org/eclipse/tracecompass/tmf/ui/tests/viewers/ToolTipStringTest.java
new file mode 100644
index 0000000000..16bdc088f9
--- /dev/null
+++ b/tmf/org.eclipse.tracecompass.tmf.ui.tests/src/org/eclipse/tracecompass/tmf/ui/tests/viewers/ToolTipStringTest.java
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Ericsson
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.tmf.ui.tests.viewers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import org.eclipse.tracecompass.tmf.ui.viewers.TmfAbstractToolTipHandler.ToolTipString;
+import org.junit.Test;
+
+/**
+ * Test ToolTipString
+ *
+ * @author Matthew Khouzam
+ */
+public class ToolTipStringTest {
+
+ /**
+ * Test fromDecimal
+ */
+ @Test
+ public void testDecimal() {
+ ToolTipString fromFloat = ToolTipString.fromDecimal(1.0f);
+ ToolTipString fromDouble = ToolTipString.fromDecimal(1.0);
+ ToolTipString fromInt = ToolTipString.fromDecimal(1);
+ ToolTipString fromLong = ToolTipString.fromDecimal(1L);
+
+ assertEquals("1", fromFloat.toString());
+ assertEquals("1", fromDouble.toString());
+ assertEquals("1", fromInt.toString());
+ assertEquals("1", fromLong.toString());
+ assertEquals("1", fromFloat.toHtmlString());
+ assertEquals("1", fromDouble.toHtmlString());
+ assertEquals("1", fromInt.toHtmlString());
+ assertEquals("1", fromLong.toHtmlString());
+ }
+
+ /**
+ * Test fromHtml
+ */
+ @Test
+ public void testHtml() {
+ String simple = "<head></head>";
+ String normal = "<a href=\"www.tracecompass.org\">Trace Compass</a>";
+ String complexValid = "<body id=\"useless tag\">"+
+ "<div attribute=someattr> <a>\tSkip to main page <!-- Sign Up to our Newsletter --></a> "+
+ "</body>";
+ String broken1 = "<head><head>";
+ String broken2 = "<head></body>";
+ String broken3 = "Vince wants his name in the unit tests";
+
+ ToolTipString simpleHtml = ToolTipString.fromHtml(simple);
+ ToolTipString normalHtml = ToolTipString.fromHtml(normal);
+ ToolTipString complexHtml = ToolTipString.fromHtml(complexValid);
+ ToolTipString brokenHtml1 = ToolTipString.fromHtml(broken1);
+ ToolTipString brokenHtml2 = ToolTipString.fromHtml(broken2);
+ ToolTipString brokenHtml3 = ToolTipString.fromHtml(broken3);
+
+ assertEquals("", simpleHtml.toString());
+ assertEquals("Trace Compass", normalHtml.toString());
+ assertEquals(" \tSkip to main page ", complexHtml.toString());
+ assertEquals("", brokenHtml1.toString());
+ assertEquals("", brokenHtml2.toString());
+ assertEquals(broken3, brokenHtml3.toString());
+
+ assertEquals(simple, simpleHtml.toHtmlString());
+ assertEquals(normal, normalHtml.toHtmlString());
+ assertEquals(complexValid, complexHtml.toHtmlString());
+ assertEquals(broken1, brokenHtml1.toHtmlString());
+ assertEquals(broken2, brokenHtml2.toHtmlString());
+ assertEquals(broken3, brokenHtml3.toHtmlString());
+ }
+
+ /**
+ * Test fromString
+ */
+ @Test
+ public void testString() {
+ ToolTipString empty = ToolTipString.fromString("");
+ ToolTipString complicatedString = ToolTipString.fromString("¯\\_(ツ)_/¯");
+
+ assertEquals("", empty.toString());
+ assertEquals("¯\\_(ツ)_/¯", complicatedString.toString());
+
+ assertEquals("", empty.toHtmlString());
+ assertEquals("&macr;\\_(ツ)_/&macr;", complicatedString.toHtmlString());
+ }
+
+ /**
+ * Test fromTimestamp
+ */
+ @Test
+ public void testTimestamp() {
+ ToolTipString ts0 = ToolTipString.fromTimestamp("", -1);
+ ToolTipString ts1 = ToolTipString.fromTimestamp("bob", -1);
+ ToolTipString ts2 = ToolTipString.fromTimestamp("", 1);
+ ToolTipString ts3 = ToolTipString.fromTimestamp("bob", 1);
+
+ assertEquals("", ts0.toString());
+ assertEquals("bob", ts1.toString());
+ assertEquals("", ts2.toString());
+ assertEquals("bob", ts3.toString());
+ assertEquals("<a href=time://-1></a>", ts0.toHtmlString());
+ assertEquals("<a href=time://-1>bob</a>", ts1.toHtmlString());
+ assertEquals("<a href=time://1></a>", ts2.toHtmlString());
+ assertEquals("<a href=time://1>bob</a>", ts3.toHtmlString());
+ }
+
+ /**
+ * Test equals
+ */
+ @Test
+ public void testEgality() {
+ ToolTipString fromHtml = ToolTipString.fromHtml("<div>1</div>");
+ ToolTipString fromHtmlString = ToolTipString.fromString("<div>1</div>");
+ ToolTipString fromString = ToolTipString.fromString("1");
+ ToolTipString fromInt = ToolTipString.fromDecimal(1);
+ ToolTipString fromLong = ToolTipString.fromDecimal(1L);
+ assertNotEquals(fromInt, null);
+ assertNotEquals(fromInt, new Object());
+ assertEquals(fromInt, fromInt);
+ assertEquals(fromInt.hashCode(), fromLong.hashCode());
+ assertEquals(fromInt, fromLong);
+ assertNotEquals(fromInt, fromHtml);
+ assertNotEquals(fromHtmlString, fromHtml);
+ assertNotEquals(fromHtml, ToolTipString.fromHtml("<a>1</a>"));
+ assertEquals(fromString.hashCode(), fromLong.hashCode());
+ assertEquals(fromString, fromLong);
+ }
+}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/TmfAbstractToolTipHandler.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/TmfAbstractToolTipHandler.java
index 00633b8b28..47a668916e 100644
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/TmfAbstractToolTipHandler.java
+++ b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/TmfAbstractToolTipHandler.java
@@ -20,6 +20,8 @@ import java.util.regex.Pattern;
import org.apache.commons.lang3.StringEscapeUtils;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.browser.Browser;
@@ -70,6 +72,7 @@ public abstract class TmfAbstractToolTipHandler {
*
* @since 5.0
*/
+ @NonNullByDefault
public static class ToolTipString {
private final String fText;
@@ -135,7 +138,7 @@ public abstract class TmfAbstractToolTipHandler {
}
sNumberFormat = format;
}
- String number = format.format(decimal);
+ String number = Objects.requireNonNull(format.format(decimal));
return new ToolTipString(number, toHtmlString(number));
}
@@ -150,21 +153,21 @@ public abstract class TmfAbstractToolTipHandler {
* @return the tool tip string
*/
public static ToolTipString fromTimestamp(String text, long timestamp) {
- return new ToolTipString(text, String.format(TIME_HYPERLINK, timestamp, toHtmlString(text)));
+ return new ToolTipString(text, Objects.requireNonNull(String.format(TIME_HYPERLINK, timestamp, toHtmlString(text))));
}
private static String toHtmlString(String text) {
- return StringEscapeUtils.escapeHtml4(text)
+ return Objects.requireNonNull(StringEscapeUtils.escapeHtml4(text)
.replaceAll("[ \\t]", "&nbsp;") //$NON-NLS-1$ //$NON-NLS-2$
- .replaceAll("\\r?\\n", "<br>"); //$NON-NLS-1$ //$NON-NLS-2$
+ .replaceAll("\\r?\\n", "<br>")); //$NON-NLS-1$ //$NON-NLS-2$
}
private static String toText(String htmlString) {
- return StringEscapeUtils.unescapeHtml4(htmlString.replaceAll("\\<[^>]*>", "")); //$NON-NLS-1$ //$NON-NLS-2$
+ return Objects.requireNonNull(StringEscapeUtils.unescapeHtml4(htmlString.replaceAll("\\<[^>]*>", ""))); //$NON-NLS-1$ //$NON-NLS-2$
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
if (obj == this) {
return true;
}
@@ -420,7 +423,7 @@ public abstract class TmfAbstractToolTipHandler {
* line value
*/
protected void addItem(String name, String value) {
- addItem(null, ToolTipString.fromString(name), ToolTipString.fromString(value));
+ addItem(null, ToolTipString.fromString(Objects.requireNonNull(name)), ToolTipString.fromString(Objects.requireNonNull(value)));
}
/**
@@ -435,7 +438,7 @@ public abstract class TmfAbstractToolTipHandler {
* line value
* @since 5.0
*/
- protected void addItem(String category, String name, String value) {
+ protected void addItem(@Nullable String category, @NonNull String name, @NonNull String value) {
addItem(category == null ? null : ToolTipString.fromString(category), ToolTipString.fromString(name), ToolTipString.fromString(value));
}
@@ -450,7 +453,7 @@ public abstract class TmfAbstractToolTipHandler {
* line value
* @since 5.0
*/
- protected void addItem(ToolTipString category, ToolTipString name, ToolTipString value) {
+ protected void addItem(ToolTipString category, @NonNull ToolTipString name, @NonNull ToolTipString value) {
fModel.put(category == null ? UNCATEGORIZED : category, name, value);
}
@@ -543,7 +546,7 @@ public abstract class TmfAbstractToolTipHandler {
widestCat = Math.max(widestCat, catExtent.x);
totalHeight += catExtent.y + 8;
}
- Set<@NonNull Entry<ToolTipString, ToolTipString>> entrySet = model.row(row).entrySet();
+ Set<Entry<ToolTipString, ToolTipString>> entrySet = model.row(row).entrySet();
for (Entry<ToolTipString, ToolTipString> entry : entrySet) {
Point keyExtent = gc.textExtent(entry.getKey().toString());
Point valExtent = gc.textExtent(entry.getValue().toString());
@@ -615,7 +618,7 @@ public abstract class TmfAbstractToolTipHandler {
if (!row.equals(UNCATEGORIZED)) {
toolTipContent.append("<tr><th colspan=\"2\"><button class=\"collapsible\">").append(row.toHtmlString()).append("</button></th></tr>");
}
- Set<@NonNull Entry<ToolTipString, ToolTipString>> entrySet = model.row(row).entrySet();
+ Set<Entry<ToolTipString, ToolTipString>> entrySet = model.row(row).entrySet();
for (Entry<ToolTipString, ToolTipString> entry : entrySet) {
toolTipContent.append("<tr>");
toolTipContent.append("<td>");
@@ -678,7 +681,7 @@ public abstract class TmfAbstractToolTipHandler {
setupControl(composite);
Set<ToolTipString> rowKeySet = model.rowKeySet();
for (ToolTipString row : rowKeySet) {
- Set<@NonNull Entry<ToolTipString, ToolTipString>> entrySet = model.row(row).entrySet();
+ Set<Entry<ToolTipString, ToolTipString>> entrySet = model.row(row).entrySet();
for (Entry<ToolTipString, ToolTipString> entry : entrySet) {
Label nameLabel = new Label(composite, SWT.NO_FOCUS);
nameLabel.setText(entry.getKey().toString());

Back to the top