Mercurial > hg > release > thermostat-1.6
changeset 1905:5a3e91f53ee3
Add BreadCrumbIconResourcesTest and TreeMapBreadcrumbTest and HeapIconResourcesTest
PR2997
Reviewed-by: jkang
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-June/019206.html
Original-thread: http://icedtea.classpath.org/pipermail/thermostat/2015-August/015562.html
author | James Aziz <jaziz@redhat.com> |
---|---|
date | Tue, 07 Jun 2016 10:33:39 -0400 |
parents | 78e7dfeec5dc |
children | 686b04914043 |
files | client/swing/src/main/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapBreadcrumb.java client/swing/src/test/java/com/redhat/thermostat/client/swing/components/experimental/BreadcrumbIconResourcesTest.java client/swing/src/test/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapBreadcrumbTest.java vm-heap-analysis/client-core/src/test/java/com/redhat/thermostat/vm/heap/analysis/client/core/HeapIconResourcesTest.java |
diffstat | 4 files changed, 293 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapBreadcrumb.java Mon Jun 06 15:17:50 2016 -0400 +++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapBreadcrumb.java Tue Jun 07 10:33:39 2016 -0400 @@ -63,7 +63,7 @@ private static final long serialVersionUID = 1L; /** - * Font used by bradcrumb items. + * Font used by breadcrumb items. */ private Font FONT = (Font) UIManager.get("thermostat-default-font"); @@ -143,6 +143,14 @@ this.add(item); } + /** + * Package-private for testing only. + * @return the number of BreadcrumbItems in the items stack + */ + int getItemCount() { + return items.size(); + } + /** @@ -284,8 +292,10 @@ /** * Calculates the labels' text size in order to scale the given image * and to apply to it. + * + * Package-private for testing only. */ - private void adaptIcon(JLabel label, ImageIcon icon) { + void adaptIcon(JLabel label, ImageIcon icon) { Rectangle fontArea; try { fontArea = label.getFont().getStringBounds(label.getText(),
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/swing/src/test/java/com/redhat/thermostat/client/swing/components/experimental/BreadcrumbIconResourcesTest.java Tue Jun 07 10:33:39 2016 -0400 @@ -0,0 +1,65 @@ +/* + * Copyright 2012-2016 Red Hat, Inc. + * + * This file is part of Thermostat. + * + * Thermostat is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * Thermostat is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Thermostat; see the file COPYING. If not see + * <http://www.gnu.org/licenses/>. + * + * Linking this code with other modules is making a combined work + * based on this code. Thus, the terms and conditions of the GNU + * General Public License cover the whole combination. + * + * As a special exception, the copyright holders of this code give + * you permission to link this code with independent modules to + * produce an executable, regardless of the license terms of these + * independent modules, and to copy and distribute the resulting + * executable under terms of your choice, provided that you also + * meet, for each linked independent module, the terms and conditions + * of the license of that module. An independent module is a module + * which is not derived from or based on this code. If you modify + * this code, you may extend this exception to your version of the + * library, but you are not obligated to do so. If you do not wish + * to do so, delete this exception statement from your version. + */ + +package com.redhat.thermostat.client.swing.components.experimental; + +import static org.junit.Assert.assertNotNull; + +import org.junit.Assert; +import org.junit.Test; + +import com.redhat.thermostat.client.ui.IconDescriptor; + +public class BreadcrumbIconResourcesTest { + + @Test + public void testGetIconReturnsSomething() { + IconDescriptor result = BreadcrumbIconResources.getIcon(BreadcrumbIconResources.BREADCRUMB_HEAD); + assertNotNull(result); + + result = BreadcrumbIconResources.getIcon(BreadcrumbIconResources.BREADCRUMB_BODY); + assertNotNull(result); + + result = BreadcrumbIconResources.getIcon(BreadcrumbIconResources.BREADCRUMB_TAIL); + assertNotNull(result); + } + + @Test + public void testIncorrectPathReturnsNull() { + IconDescriptor result = BreadcrumbIconResources.getIcon("does not exist"); + Assert.assertNull(result); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/swing/src/test/java/com/redhat/thermostat/client/swing/components/experimental/TreeMapBreadcrumbTest.java Tue Jun 07 10:33:39 2016 -0400 @@ -0,0 +1,154 @@ +/* + * Copyright 2012-2016 Red Hat, Inc. + * + * This file is part of Thermostat. + * + * Thermostat is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * Thermostat is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Thermostat; see the file COPYING. If not see + * <http://www.gnu.org/licenses/>. + * + * Linking this code with other modules is making a combined work + * based on this code. Thus, the terms and conditions of the GNU + * General Public License cover the whole combination. + * + * As a special exception, the copyright holders of this code give + * you permission to link this code with independent modules to + * produce an executable, regardless of the license terms of these + * independent modules, and to copy and distribute the resulting + * executable under terms of your choice, provided that you also + * meet, for each linked independent module, the terms and conditions + * of the license of that module. An independent module is a module + * which is not derived from or based on this code. If you modify + * this code, you may extend this exception to your version of the + * library, but you are not obligated to do so. If you do not wish + * to do so, delete this exception statement from your version. + */ + +package com.redhat.thermostat.client.swing.components.experimental; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.awt.Rectangle; +import java.awt.font.FontRenderContext; +import java.lang.reflect.InvocationTargetException; + +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.SwingUtilities; + +import org.junit.Before; +import org.junit.Test; +import org.junit.experimental.categories.Category; + +import com.redhat.thermostat.annotations.internal.CacioTest; +import com.redhat.thermostat.client.swing.components.Icon; + +@Category(CacioTest.class) +public class TreeMapBreadcrumbTest { + + private String SOME_ROOT = "root"; + private double SOME_WEIGHT = 0.0; + private int SOME_WIDTH = 5; + private int SCALING_INCREMENT = 10; + private String LABEL = "label"; + + private TreeMapNode root; + private TreeMapBreadcrumb breadcrumb; + + @Before + public void setup() throws InvocationTargetException, InterruptedException { + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + root = new TreeMapNode(SOME_ROOT, SOME_WEIGHT); + + TreeMapComponent treeMapComponent = mock(TreeMapComponent.class); + when(treeMapComponent.getTreeMapRoot()).thenReturn(root); + + breadcrumb = new TreeMapBreadcrumb(treeMapComponent, root); + } + }); + } + + @Test + public void testNotifyZoom() throws InvocationTargetException, InterruptedException { + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + TreeMapNode grandchild = createTreeWithDepthTree(root); + breadcrumb.notifyZoomIn(grandchild); + assertEquals(3, breadcrumb.getItemCount()); + + breadcrumb.notifyZoomOut(); + assertEquals(2, breadcrumb.getItemCount()); + + breadcrumb.notifyZoomFull(); + assertEquals(1, breadcrumb.getItemCount()); + } + }); + } + + private TreeMapNode createTreeWithDepthTree(TreeMapNode root) { + TreeMapNode child = new TreeMapNode("childA", SOME_WEIGHT); + root.addChild(child); + + TreeMapNode grandchild = new TreeMapNode("childAA", SOME_WEIGHT); + child.addChild(grandchild); + + grandchild = new TreeMapNode("childAB", SOME_WEIGHT); + child.addChild(grandchild); + + return grandchild; + } + + @Test + public void testAdaptIconWithValidLabel() throws InvocationTargetException, InterruptedException { + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + JLabel label = new JLabel(); + label.setHorizontalTextPosition(JLabel.CENTER); + label.setText(LABEL); + ImageIcon icon = new Icon(BreadcrumbIconResources.getIcon(BreadcrumbIconResources + .BREADCRUMB_BODY)); + + breadcrumb.adaptIcon(label, icon); + assertNotNull(label.getIcon()); + Rectangle fontArea = label.getFont().getStringBounds(label.getText(), + new FontRenderContext(label.getFont().getTransform(), false, false)).getBounds(); + assertEquals(fontArea.getBounds().width + 10, label.getIcon().getIconWidth()); + } + }); + } + + @Test + public void testAdaptIconWithFontlessLabel() throws InvocationTargetException, InterruptedException { + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + JLabel label = new JLabel(); + label.setFont(null); + label.setBounds(0, 0, SOME_WIDTH, 0); + ImageIcon icon = new Icon(BreadcrumbIconResources.getIcon(BreadcrumbIconResources + .BREADCRUMB_BODY)); + + breadcrumb.adaptIcon(label, icon); + assertNotNull(label.getIcon()); + assertEquals(SOME_WIDTH + SCALING_INCREMENT, label.getIcon().getIconWidth()); + } + }); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vm-heap-analysis/client-core/src/test/java/com/redhat/thermostat/vm/heap/analysis/client/core/HeapIconResourcesTest.java Tue Jun 07 10:33:39 2016 -0400 @@ -0,0 +1,62 @@ +/* + * Copyright 2012-2016 Red Hat, Inc. + * + * This file is part of Thermostat. + * + * Thermostat is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * Thermostat is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Thermostat; see the file COPYING. If not see + * <http://www.gnu.org/licenses/>. + * + * Linking this code with other modules is making a combined work + * based on this code. Thus, the terms and conditions of the GNU + * General Public License cover the whole combination. + * + * As a special exception, the copyright holders of this code give + * you permission to link this code with independent modules to + * produce an executable, regardless of the license terms of these + * independent modules, and to copy and distribute the resulting + * executable under terms of your choice, provided that you also + * meet, for each linked independent module, the terms and conditions + * of the license of that module. An independent module is a module + * which is not derived from or based on this code. If you modify + * this code, you may extend this exception to your version of the + * library, but you are not obligated to do so. If you do not wish + * to do so, delete this exception statement from your version. + */ + +package com.redhat.thermostat.vm.heap.analysis.client.core; + +import static org.junit.Assert.assertNotNull; + +import org.junit.Assert; +import org.junit.Test; + +import com.redhat.thermostat.client.ui.IconDescriptor; + +public class HeapIconResourcesTest { + + @Test + public void testGetIconReturnsSomething() { + IconDescriptor result = HeapIconResources.getIcon(HeapIconResources.PIN_MASK); + assertNotNull(result); + + result = HeapIconResources.getIcon(HeapIconResources.TRIGGER_HEAP_DUMP); + assertNotNull(result); + } + + @Test + public void testIncorrectPathReturnsNull() { + IconDescriptor result = HeapIconResources.getIcon("does not exist"); + Assert.assertNull(result); + } +}