Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 035e5d42 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "add a comparator for LogMaker"

parents 72f05400 58047b94
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -26158,6 +26158,7 @@ package android.metrics {
    method public long getTimestamp();
    method public long getTimestamp();
    method public int getType();
    method public int getType();
    method public boolean isLongCounterBucket();
    method public boolean isLongCounterBucket();
    method public boolean isSubsetOf(android.metrics.LogMaker);
    method public boolean isValidValue(java.lang.Object);
    method public boolean isValidValue(java.lang.Object);
    method public java.lang.Object[] serialize();
    method public java.lang.Object[] serialize();
    method public android.metrics.LogMaker setCategory(int);
    method public android.metrics.LogMaker setCategory(int);
+21 −0
Original line number Original line Diff line number Diff line
@@ -240,6 +240,9 @@ public class LogMaker {
        return out;
        return out;
    }
    }


    /**
     * Reconstitute an object from the output of {@link #serialize()}.
     */
    public void deserialize(Object[] items) {
    public void deserialize(Object[] items) {
        int i = 0;
        int i = 0;
        while (i < items.length) {
        while (i < items.length) {
@@ -252,4 +255,22 @@ public class LogMaker {
            }
            }
        }
        }
    }
    }

    /**
     * @param that the object to compare to.
     * @return true if values in that equal values in this, for tags that exist in this.
     */
    public boolean isSubsetOf(LogMaker that) {
        if (that == null) {
            return false;
        }
        for (int i = 0; i < entries.size(); i++) {
            int key = this.entries.keyAt(i);
            Object thisValue = this.entries.valueAt(i);
            Object thatValue = that.entries.get(key);
            if ((thisValue == null && thatValue != null) || !thisValue.equals(thatValue))
                return false;
        }
        return true;
    }
}
}
+74 −0
Original line number Original line Diff line number Diff line
@@ -132,4 +132,78 @@ public class LogMakerTest extends TestCase {
        assertTrue(badBuilder.serialize().length < LogMaker.MAX_SERIALIZED_SIZE);
        assertTrue(badBuilder.serialize().length < LogMaker.MAX_SERIALIZED_SIZE);
    }
    }


    public void testIdentityEquality() {
        LogMaker a = new LogMaker(0);
        a.addTaggedData(1, "onetwothree");
        a.addTaggedData(2, 123);
        a.addTaggedData(3, 123L);

        assertTrue("objects should be equal to themselves", a.isSubsetOf(a));
    }

    public void testExactEquality() {
        LogMaker a = new LogMaker(0);
        a.addTaggedData(1, "onetwothree");
        a.addTaggedData(2, 123);
        a.addTaggedData(3, 123L);
        LogMaker b = new LogMaker(0);
        b.addTaggedData(1, "onetwothree");
        b.addTaggedData(2, 123);
        b.addTaggedData(3, 123L);

        assertTrue("deep equality should be true", a.isSubsetOf(b));
        assertTrue("deep equality shoudl be true", b.isSubsetOf(a));
    }

    public void testSubsetEquality() {
        LogMaker a = new LogMaker(0);
        a.addTaggedData(1, "onetwothree");
        a.addTaggedData(2, 123);
        LogMaker b = new LogMaker(0);
        b.addTaggedData(1, "onetwothree");
        b.addTaggedData(2, 123);
        b.addTaggedData(3, 123L);

        assertTrue("a is a strict subset of b", a.isSubsetOf(b));
        assertTrue("b is not a strict subset of a", !b.isSubsetOf(a));
    }

    public void testInequality() {
        LogMaker a = new LogMaker(0);
        a.addTaggedData(1, "onetwofour");
        a.addTaggedData(2, 1234);
        LogMaker b = new LogMaker(0);
        b.addTaggedData(1, "onetwothree");
        b.addTaggedData(2, 123);
        b.addTaggedData(3, 123L);

        assertTrue("a is not a subset of b", !a.isSubsetOf(b));
        assertTrue("b is not a subset of a", !b.isSubsetOf(a));
    }

    public void testWildcardEquality() {
        LogMaker empty = new LogMaker(0);
        empty.clearTaggedData(MetricsEvent.RESERVED_FOR_LOGBUILDER_CATEGORY);  //dirty trick
        LogMaker b = new LogMaker(0);
        b.addTaggedData(1, "onetwothree");
        b.addTaggedData(2, 123);
        b.addTaggedData(3, 123L);

        assertTrue("empty builder is a subset of anything", empty.isSubsetOf(b));
    }

    public void testNullEquality() {
        LogMaker a = new LogMaker(0);
        a.addTaggedData(1, "onetwofour");
        a.addTaggedData(2, 1234);

        assertTrue("a is not a subset of null", !a.isSubsetOf(null));
    }

    public void testMajorCategory() {
        LogMaker a = new LogMaker(1);
        LogMaker b = new LogMaker(2);
        assertFalse(a.isSubsetOf(b));
        assertFalse(b.isSubsetOf(a));
    }
}
}