diff options
| -rw-r--r-- | main/src/cgeo/geocaching/utils/LazyInitializedList.java | 12 | ||||
| -rw-r--r-- | tests/src/cgeo/geocaching/utils/LazyInitializedListTest.java | 32 |
2 files changed, 36 insertions, 8 deletions
diff --git a/main/src/cgeo/geocaching/utils/LazyInitializedList.java b/main/src/cgeo/geocaching/utils/LazyInitializedList.java index 76876fc..25af811 100644 --- a/main/src/cgeo/geocaching/utils/LazyInitializedList.java +++ b/main/src/cgeo/geocaching/utils/LazyInitializedList.java @@ -32,11 +32,19 @@ public abstract class LazyInitializedList<ElementType> implements Iterable<Eleme } public void set(final List<ElementType> elements) { - list = new ArrayList<ElementType>(elements); + if (elements != null) { + list = new ArrayList<ElementType>(elements); + } else { + list = new ArrayList<ElementType>(); + } } public void set(LazyInitializedList<ElementType> other) { - list = new ArrayList<ElementType>(other.asList()); + if (other != null) { + list = new ArrayList<ElementType>(other.asList()); + } else { + list = new ArrayList<ElementType>(); + } } public boolean isEmpty() { diff --git a/tests/src/cgeo/geocaching/utils/LazyInitializedListTest.java b/tests/src/cgeo/geocaching/utils/LazyInitializedListTest.java index 1d0767e..b3eaedf 100644 --- a/tests/src/cgeo/geocaching/utils/LazyInitializedListTest.java +++ b/tests/src/cgeo/geocaching/utils/LazyInitializedListTest.java @@ -6,13 +6,16 @@ import java.util.List; import junit.framework.TestCase; public class LazyInitializedListTest extends TestCase { + + private static final class MockedLazyInitializedList extends LazyInitializedList<String> { + @Override + protected List<String> loadFromDatabase() { + return new ArrayList<String>(); + } + } + public static void testAccess() { - final LazyInitializedList<String> list = new LazyInitializedList<String>() { - @Override - protected List<String> loadFromDatabase() { - return new ArrayList<String>(); - } - }; + final LazyInitializedList<String> list = new MockedLazyInitializedList(); assertTrue(list.isEmpty()); list.add("Test"); assertFalse(list.isEmpty()); @@ -24,4 +27,21 @@ public class LazyInitializedListTest extends TestCase { } assertEquals(1, iterations); } + + public static void testNull() { + final LazyInitializedList<String> list = new MockedLazyInitializedList(); + list.set((LazyInitializedList<String>) null); + list.set((ArrayList<String>) null); + } + + public static void testUnmodifiable() { + final MockedLazyInitializedList list = new MockedLazyInitializedList(); + boolean unsupported = false; + try { + list.asList().add("this is not possible"); + } catch (UnsupportedOperationException e) { + unsupported = true; + } + assertTrue(unsupported); + } } |
