From d895034bb13a00fc7c61900fbfbace61f00629eb Mon Sep 17 00:00:00 2001 From: David Gault Date: Tue, 1 Aug 2017 11:50:41 +0100 Subject: [PATCH 1/7] getParent returns null if does not exist --- src/main/java/loci/common/Location.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/loci/common/Location.java b/src/main/java/loci/common/Location.java index 8d214164..68d20f58 100644 --- a/src/main/java/loci/common/Location.java +++ b/src/main/java/loci/common/Location.java @@ -620,7 +620,9 @@ public String getParent() { /* @see java.io.File#getParentFile() */ public Location getParentFile() { - return new Location(getParent()); + String parent = this.getParent(); + if (parent == null) return null; + return new Location(parent); } /* @see java.io.File#getPath() */ From 205b39fb0e485782b31a170bf19b48defed8927a Mon Sep 17 00:00:00 2001 From: David Gault Date: Tue, 1 Aug 2017 13:20:03 +0100 Subject: [PATCH 2/7] Add null parent unit test --- src/test/java/loci/common/utests/LocationTest.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/java/loci/common/utests/LocationTest.java b/src/test/java/loci/common/utests/LocationTest.java index c835d804..cb7b8b15 100644 --- a/src/test/java/loci/common/utests/LocationTest.java +++ b/src/test/java/loci/common/utests/LocationTest.java @@ -175,6 +175,12 @@ public void testParent() { file.getParentFile().getAbsolutePath()); } } + + @Test + public void testParentNull() { + Location nullParent = new Location("nullParentFile", null); + assertEquals(nullParent.getName(), null, nullParent.getParentFile()); + } @Test public void testIsDirectory() { From 026b9e1a579dc99e69e17d69a76c43bae05bd30b Mon Sep 17 00:00:00 2001 From: David Gault Date: Tue, 1 Aug 2017 13:31:28 +0100 Subject: [PATCH 3/7] Correct parent child parameters --- src/test/java/loci/common/utests/LocationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/loci/common/utests/LocationTest.java b/src/test/java/loci/common/utests/LocationTest.java index cb7b8b15..c4f6404e 100644 --- a/src/test/java/loci/common/utests/LocationTest.java +++ b/src/test/java/loci/common/utests/LocationTest.java @@ -178,7 +178,7 @@ public void testParent() { @Test public void testParentNull() { - Location nullParent = new Location("nullParentFile", null); + Location nullParent = new Location(null, "nullParentFile"); assertEquals(nullParent.getName(), null, nullParent.getParentFile()); } From 5bcf5c70abee1fb0561e077fd0c59d63e597dcc0 Mon Sep 17 00:00:00 2001 From: David Gault Date: Tue, 1 Aug 2017 16:07:53 +0100 Subject: [PATCH 4/7] Location test: null parent for String and Location --- src/test/java/loci/common/utests/LocationTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/java/loci/common/utests/LocationTest.java b/src/test/java/loci/common/utests/LocationTest.java index c4f6404e..6755aabc 100644 --- a/src/test/java/loci/common/utests/LocationTest.java +++ b/src/test/java/loci/common/utests/LocationTest.java @@ -178,7 +178,9 @@ public void testParent() { @Test public void testParentNull() { - Location nullParent = new Location(null, "nullParentFile"); + Location nullParent = new Location((String) null, "nullParentFile"); + assertEquals(nullParent.getName(), null, nullParent.getParentFile()); + nullParent = new Location((Location) null, "nullParentFile"); assertEquals(nullParent.getName(), null, nullParent.getParentFile()); } From 40718961b5dfb11aedc9c1298c8d4410c945b8e3 Mon Sep 17 00:00:00 2001 From: David Gault Date: Wed, 9 Aug 2017 16:11:10 +0100 Subject: [PATCH 5/7] LocationTest: Prevent mismatched nulls --- src/test/java/loci/common/utests/LocationTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/loci/common/utests/LocationTest.java b/src/test/java/loci/common/utests/LocationTest.java index 6755aabc..5a95209d 100644 --- a/src/test/java/loci/common/utests/LocationTest.java +++ b/src/test/java/loci/common/utests/LocationTest.java @@ -179,9 +179,9 @@ public void testParent() { @Test public void testParentNull() { Location nullParent = new Location((String) null, "nullParentFile"); - assertEquals(nullParent.getName(), null, nullParent.getParentFile()); + assertEquals(nullParent.getName(), String.valueOf("null"), nullParent.getParentFile()); nullParent = new Location((Location) null, "nullParentFile"); - assertEquals(nullParent.getName(), null, nullParent.getParentFile()); + assertEquals(nullParent.getName(), String.valueOf("null"), nullParent.getParentFile()); } @Test From d046463eadd399e506df1c019e554541901eca28 Mon Sep 17 00:00:00 2001 From: David Gault Date: Wed, 9 Aug 2017 19:49:53 +0100 Subject: [PATCH 6/7] Handle null pointer in constructor --- src/main/java/loci/common/Location.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/loci/common/Location.java b/src/main/java/loci/common/Location.java index 68d20f58..78a2be0e 100644 --- a/src/main/java/loci/common/Location.java +++ b/src/main/java/loci/common/Location.java @@ -125,11 +125,11 @@ public Location(File file) { } public Location(String parent, String child) { - this(parent + File.separator + child); + this(parent == null ? child : parent + File.separator + child); } public Location(Location parent, String child) { - this(parent.getAbsolutePath(), child); + this(parent == null ? (String) null : parent.getAbsolutePath(), child); } // -- Location API methods -- From acf71ded19d011f5a3fcf5e6b9820a75528eb290 Mon Sep 17 00:00:00 2001 From: David Gault Date: Wed, 9 Aug 2017 19:50:11 +0100 Subject: [PATCH 7/7] Location test: Use assertNull --- src/test/java/loci/common/utests/LocationTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/loci/common/utests/LocationTest.java b/src/test/java/loci/common/utests/LocationTest.java index 5a95209d..cb13ef5b 100644 --- a/src/test/java/loci/common/utests/LocationTest.java +++ b/src/test/java/loci/common/utests/LocationTest.java @@ -33,6 +33,7 @@ package loci.common.utests; import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertNull; import java.io.File; import java.io.IOException; @@ -179,9 +180,9 @@ public void testParent() { @Test public void testParentNull() { Location nullParent = new Location((String) null, "nullParentFile"); - assertEquals(nullParent.getName(), String.valueOf("null"), nullParent.getParentFile()); + assertNull(nullParent.getParentFile()); nullParent = new Location((Location) null, "nullParentFile"); - assertEquals(nullParent.getName(), String.valueOf("null"), nullParent.getParentFile()); + assertNull(nullParent.getParentFile()); } @Test