Merge "WorkSource: Fix corner-case in equals method."

This commit is contained in:
TreeHugger Robot
2018-01-10 13:01:38 +00:00
committed by Android (Google) Code Review
2 changed files with 32 additions and 4 deletions

View File

@@ -7,7 +7,6 @@ import android.util.proto.ProtoOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Objects;
/**
* Describes the source of some work that may be done by someone else.
@@ -162,9 +161,21 @@ public class WorkSource implements Parcelable {
@Override
public boolean equals(Object o) {
return o instanceof WorkSource
&& !diff((WorkSource) o)
&& Objects.equals(mChains, ((WorkSource) o).mChains);
if (o instanceof WorkSource) {
WorkSource other = (WorkSource) o;
if (diff(other)) {
return false;
}
if (mChains != null && !mChains.isEmpty()) {
return mChains.equals(other.mChains);
} else {
return other.mChains == null || other.mChains.isEmpty();
}
}
return false;
}
@Override

View File

@@ -128,6 +128,23 @@ public class WorkSourceTest extends TestCase {
assertFalse(ws3.equals(ws1));
}
public void testEquals_workChains_nullEmptyAreEquivalent() {
// Construct a WorkSource that has no WorkChains, but whose workChains list
// is non-null.
WorkSource ws1 = new WorkSource();
ws1.add(100);
ws1.createWorkChain().addNode(100, null);
ws1.getWorkChains().clear();
WorkSource ws2 = new WorkSource();
ws2.add(100);
assertEquals(ws1, ws2);
ws2.createWorkChain().addNode(100, null);
assertFalse(ws1.equals(ws2));
}
public void testWorkSourceParcelling() {
WorkSource ws = new WorkSource();