diff options
author | Matthew Khouzam | 2019-06-07 15:05:36 +0000 |
---|---|---|
committer | Matthew Khouzam | 2019-06-08 01:17:31 +0000 |
commit | 5d802179a9f92ab5f683d243c07edf94d004155f (patch) | |
tree | e19eabcb5a510de07234dc24ab4ce68603bfa907 | |
parent | 908bea5a636b4e10bb64e5c1710c6144fb0a834e (diff) | |
download | org.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
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("¯\\_(ツ)_/¯", 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]", " ") //$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()); |