aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOmair Majid <[email protected]>2013-09-20 11:41:36 -0400
committerOmair Majid <[email protected]>2013-09-20 11:41:36 -0400
commit9ba69baff18dd24b207e0a8b6ad76133fe4ea536 (patch)
treedcb4a28c4129b0513293d2032bc99fd0e299e0cc
parent5f870d7b838b281083fd99cfc234f739815d23e9 (diff)
Unit test for InformationDesc
Also remove the references to JNLPFile from InformationDesc. This makes it much easier to instantiate InformationDesc for tests.
-rw-r--r--ChangeLog11
-rw-r--r--netx/net/sourceforge/jnlp/InformationDesc.java15
-rw-r--r--netx/net/sourceforge/jnlp/JNLPFile.java2
-rw-r--r--netx/net/sourceforge/jnlp/Parser.java2
-rw-r--r--tests/netx/unit/net/sourceforge/jnlp/InformationDescTest.java209
5 files changed, 225 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 5144bd6..501e66b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2013-09-20 Omair Majid <[email protected]>
+
+ * netx/net/sourceforge/jnlp/InformationDesc.java
+ (InformationDesc): Remove JNLPFile argument.
+ (getJNLPFile): Remove.
+ * netx/net/sourceforge/jnlp/JNLPFile.java
+ (getInformation): Adjust to new InformationDesc constructor.
+ * netx/net/sourceforge/jnlp/Parser.java
+ (getInformation): Likewise.
+ * tests/netx/unit/net/sourceforge/jnlp/InformationDescTest.java: New file.
+
2013-09-19 Jana Fabrikova <[email protected]>
Added text only reports from reproducers and unit tests run
diff --git a/netx/net/sourceforge/jnlp/InformationDesc.java b/netx/net/sourceforge/jnlp/InformationDesc.java
index f83329a..4d38d85 100644
--- a/netx/net/sourceforge/jnlp/InformationDesc.java
+++ b/netx/net/sourceforge/jnlp/InformationDesc.java
@@ -52,17 +52,13 @@ public class InformationDesc {
/** the data as list of key,value pairs */
private List<Object> info;
- /** the JNLPFile this information is for */
- private JNLPFile jnlpFile;
/**
* Create an information element object.
*
- * @param jnlpFile file that the information is for
* @param locales the locales the information is for
*/
- public InformationDesc(JNLPFile jnlpFile, Locale locales[]) {
- this.jnlpFile = jnlpFile;
+ public InformationDesc(Locale locales[]) {
this.locales = locales;
}
@@ -171,6 +167,8 @@ public class InformationDesc {
}
}
+ // FIXME if there's no larger icon, choose the closest smaller icon
+ // instead of the first
if (best == null)
best = icons[0];
@@ -185,13 +183,6 @@ public class InformationDesc {
}
/**
- * Returns the JNLPFile the information is for.
- */
- public JNLPFile getJNLPFile() {
- return jnlpFile;
- }
-
- /**
* Returns whether offline execution allowed.
*/
public boolean isOfflineAllowed() {
diff --git a/netx/net/sourceforge/jnlp/JNLPFile.java b/netx/net/sourceforge/jnlp/JNLPFile.java
index a48ed7e..3577482 100644
--- a/netx/net/sourceforge/jnlp/JNLPFile.java
+++ b/netx/net/sourceforge/jnlp/JNLPFile.java
@@ -371,7 +371,7 @@ public class JNLPFile {
* through the specified locale.
*/
public InformationDesc getInformation(final Locale locale) {
- return new InformationDesc(this, new Locale[] { locale }) {
+ return new InformationDesc(new Locale[] { locale }) {
@Override
protected List<Object> getItems(Object key) {
List<Object> result = new ArrayList<Object>();
diff --git a/netx/net/sourceforge/jnlp/Parser.java b/netx/net/sourceforge/jnlp/Parser.java
index efa6bcd..37e3c0f 100644
--- a/netx/net/sourceforge/jnlp/Parser.java
+++ b/netx/net/sourceforge/jnlp/Parser.java
@@ -494,7 +494,7 @@ class Parser {
Locale locales[] = getLocales(node);
// create information
- InformationDesc info = new InformationDesc(file, locales);
+ InformationDesc info = new InformationDesc(locales);
// step through the elements
Node child = node.getFirstChild();
diff --git a/tests/netx/unit/net/sourceforge/jnlp/InformationDescTest.java b/tests/netx/unit/net/sourceforge/jnlp/InformationDescTest.java
new file mode 100644
index 0000000..1720def
--- /dev/null
+++ b/tests/netx/unit/net/sourceforge/jnlp/InformationDescTest.java
@@ -0,0 +1,209 @@
+/* InformationDescTest.java
+ Copyright (C) 2013 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea 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.
+
+IcedTea 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 IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library 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 library. If you modify this library, 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 net.sourceforge.jnlp;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Locale;
+
+import org.junit.Test;
+
+public class InformationDescTest {
+
+ @Test
+ public void testLocales() {
+ InformationDesc info;
+
+ info = new InformationDesc(new Locale[0]);
+ assertArrayEquals(new Locale[0], info.getLocales());
+
+ Locale[] someLocales = new Locale[] { Locale.ENGLISH, Locale.FRENCH };
+ info = new InformationDesc(someLocales);
+ assertArrayEquals(someLocales, info.getLocales());
+ }
+
+ @Test
+ public void testTitle() {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+ info.addItem("title", "A Title");
+ assertEquals("A Title", info.getTitle());
+ }
+
+ @Test
+ public void testVendor() {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+ info.addItem("vendor", "Some Vendor");
+ assertEquals("Some Vendor", info.getVendor());
+ }
+
+ @Test
+ public void testHomePage() throws MalformedURLException {
+ URL url = new URL("http://some.home.page.example.com");
+ InformationDesc info = new InformationDesc(new Locale[0]);
+ info.addItem("homepage", url);
+ assertEquals(url, info.getHomepage());
+ }
+ @Test
+ public void testDescription() {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+ info.addItem("description-" + InformationDesc.DEFAULT, "Default Description");
+ assertEquals("Default Description", info.getDescription());
+ }
+
+ @Test
+ public void testDescriptionFallbackOrder() {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+ info.addItem("description-" + InformationDesc.TOOLTIP, "Tooltip Description");
+ assertEquals("Tooltip Description", info.getDescription());
+ info.addItem("description-" + InformationDesc.SHORT, "Short Description");
+ assertEquals("Short Description", info.getDescription());
+ info.addItem("description-" + InformationDesc.ONE_LINE, "One-line Description");
+ assertEquals("One-line Description", info.getDescription());
+ info.addItem("description-" + InformationDesc.DEFAULT, "Default Description");
+ assertEquals("Default Description", info.getDescription());
+ }
+
+ @Test
+ public void testDescriptionKind() {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+ info.addItem("description-" + InformationDesc.DEFAULT, "Default Description");
+ info.addItem("description-" + InformationDesc.ONE_LINE, "One-line Description");
+ info.addItem("description-" + InformationDesc.SHORT, "Short Description");
+ info.addItem("description-" + InformationDesc.TOOLTIP, "Tooltip Description");
+
+ assertEquals("Default Description", info.getDescription(InformationDesc.DEFAULT));
+ assertEquals("One-line Description", info.getDescription(InformationDesc.ONE_LINE));
+ assertEquals("Short Description", info.getDescription(InformationDesc.SHORT));
+ assertEquals("Tooltip Description", info.getDescription(InformationDesc.TOOLTIP));
+ }
+
+ @Test
+ public void testGetIcons() {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+
+ assertArrayEquals(new IconDesc[0], info.getIcons(IconDesc.DEFAULT));
+
+ IconDesc icon1 = new IconDesc(null, null, -1, -1, -1, -1);
+ IconDesc icon2 = new IconDesc(null, null, -1, -1, -1, -1);
+ info.addItem("icon-" + IconDesc.DEFAULT, icon1);
+ info.addItem("icon-" + IconDesc.DEFAULT, icon2);
+
+ assertArrayEquals(new IconDesc[] { icon1, icon2 }, info.getIcons(IconDesc.DEFAULT));
+ }
+
+ @Test
+ public void testGetIconLocations() throws MalformedURLException {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+
+ URL location1 = new URL("http://location1.example.org");
+ URL location2 = new URL("http://location2.example.org");
+ IconDesc icon1 = new IconDesc(location1, null, 10, 10, -1, -1);
+ IconDesc icon2 = new IconDesc(location2, null, 20, 20, -1, -1);
+ info.addItem("icon-" + IconDesc.DEFAULT, icon1);
+ info.addItem("icon-" + IconDesc.DEFAULT, icon2);
+
+ // exact size matches
+ assertEquals(location1, info.getIconLocation(IconDesc.DEFAULT, 10, 10));
+ assertEquals(location2, info.getIconLocation(IconDesc.DEFAULT, 20, 20));
+
+ // match a bigger icon
+ assertEquals(location1, info.getIconLocation(IconDesc.DEFAULT, 1, 1));
+ assertEquals(location2, info.getIconLocation(IconDesc.DEFAULT, 15, 15));
+
+ // match a smaller icon
+ assertEquals(location1, info.getIconLocation(IconDesc.DEFAULT, 25, 25));
+ }
+
+ @Test
+ public void testIsOfflineAllowed() {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+ assertFalse(info.isOfflineAllowed());
+ info.addItem("offline-allowed", new Object());
+ assertTrue(info.isOfflineAllowed());
+ }
+
+ @Test
+ public void testIsSharingAllowed() {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+ assertFalse(info.isSharingAllowed());
+ info.addItem("sharing-allowed", new Object());
+ assertTrue(info.isSharingAllowed());
+ }
+
+ @Test
+ public void testGetShortcut() {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+ assertNull(info.getShortcut());
+
+ ShortcutDesc shortcut = new ShortcutDesc(false, false);
+ info.addItem("shortcut", shortcut);
+ assertSame(shortcut, info.getShortcut());
+ }
+
+ @Test
+ public void testGetAssociation() throws ParseException {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+
+ assertArrayEquals(new AssociationDesc[0], info.getAssociations());
+
+ AssociationDesc association = new AssociationDesc(null, null);
+ info.addItem("association", association);
+ assertArrayEquals(new AssociationDesc[] { association }, info.getAssociations());
+ }
+
+ @Test
+ public void testGetRelatedContents() {
+ InformationDesc info = new InformationDesc(new Locale[0]);
+
+ assertArrayEquals(new RelatedContentDesc[0], info.getRelatedContents());
+
+ RelatedContentDesc relatedContent = new RelatedContentDesc(null);
+ info.addItem("related-content", relatedContent);
+
+ assertArrayEquals(new RelatedContentDesc[] { relatedContent }, info.getRelatedContents());
+ }
+
+}