From 65e8b66875f858e80e955b1aa2567e5fcfcf0aa4 Mon Sep 17 00:00:00 2001 From: Tyler Wear Date: Mon, 27 Jan 2020 10:55:38 -0800 Subject: [PATCH] Update CompareOrUpdateResult with NULL Check Like CompareResult, add in null check for input objects. Test: updated unit test Change-Id: Iea63752ff23a5bfb1cc5cb716ec579bec6c403bf --- .../android/net/util/LinkPropertiesUtils.java | 31 ++++++++++--------- .../net/util/LinkPropertiesUtilsTest.java | 12 ++++++- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/staticlibs/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java b/staticlibs/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java index c50ca0b650..bd96edbf72 100644 --- a/staticlibs/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java +++ b/staticlibs/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java @@ -91,23 +91,26 @@ public final class LinkPropertiesUtils { Function keyCalculator) { HashMap updateTracker = new HashMap<>(); - for (T oldItem : oldItems) { - updateTracker.put(keyCalculator.apply(oldItem), oldItem); - } - - for (T newItem : newItems) { - T oldItem = updateTracker.remove(keyCalculator.apply(newItem)); - if (oldItem != null) { - if (!oldItem.equals(newItem)) { - // Update of existing item. - updated.add(newItem); - } - } else { - // New item. - added.add(newItem); + if (oldItems != null) { + for (T oldItem : oldItems) { + updateTracker.put(keyCalculator.apply(oldItem), oldItem); } } + if (newItems != null) { + for (T newItem : newItems) { + T oldItem = updateTracker.remove(keyCalculator.apply(newItem)); + if (oldItem != null) { + if (!oldItem.equals(newItem)) { + // Update of existing item. + updated.add(newItem); + } + } else { + // New item. + added.add(newItem); + } + } + } removed.addAll(updateTracker.values()); } diff --git a/staticlibs/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java b/staticlibs/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java index e2cde34a98..0fa1c52e1a 100644 --- a/staticlibs/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java +++ b/staticlibs/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java @@ -229,7 +229,7 @@ public final class LinkPropertiesUtilsTest { CompareOrUpdateResult result = new CompareOrUpdateResult(oldItems, emptyList, extractPrefix); assertCompareOrUpdateResult(result, - emptyList, strArray("hello123", "howareyou669", "goodbye5678"), emptyList); + emptyList, strArray("hello123", "howareyou669", "goodbye5678"), emptyList); // Empty -> items: everything added. result = new CompareOrUpdateResult(emptyList, newItems, extractPrefix); @@ -244,5 +244,15 @@ public final class LinkPropertiesUtilsTest { result = new CompareOrUpdateResult<>(oldItems, newItems, extractPrefix); assertCompareOrUpdateResult(result, strArray("verywell"), strArray("howareyou669"), strArray("goodbye000")); + + // Null -> items: everything added. + result = new CompareOrUpdateResult(null, newItems, extractPrefix); + assertCompareOrUpdateResult(result, + strArray("hello123", "goodbye000", "verywell"), emptyList, emptyList); + + // Items -> null: everything removed. + result = new CompareOrUpdateResult(oldItems, null, extractPrefix); + assertCompareOrUpdateResult(result, + emptyList, strArray("hello123", "howareyou669", "goodbye5678"), emptyList); } } \ No newline at end of file