From 979fb7415bdd185bb941d67d9d0f53f016a419a9 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Tue, 14 May 2013 12:25:21 +0900 Subject: [PATCH] Fix PointerTrackerQueue.releaseAllPointerOlderThan Change-Id: If353869720895ee5355079c15c724132762dd70c --- .../internal/PointerTrackerQueue.java | 58 ++-- .../internal/PointerTrackerQueueTests.java | 273 +++++++++--------- 2 files changed, 171 insertions(+), 160 deletions(-) diff --git a/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java index 8901f99b7..31ef3cd8f 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java +++ b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java @@ -48,6 +48,9 @@ public final class PointerTrackerQueue { public void add(final Element pointer) { synchronized (mExpandableArrayOfActivePointers) { + if (DEBUG) { + Log.d(TAG, "add: " + pointer + " " + this); + } final ArrayList expandableArray = mExpandableArrayOfActivePointers; final int arraySize = mArraySize; if (arraySize < expandableArray.size()) { @@ -61,24 +64,27 @@ public final class PointerTrackerQueue { public void remove(final Element pointer) { synchronized (mExpandableArrayOfActivePointers) { + if (DEBUG) { + Log.d(TAG, "remove: " + pointer + " " + this); + } final ArrayList expandableArray = mExpandableArrayOfActivePointers; final int arraySize = mArraySize; - int newSize = 0; + int newIndex = 0; for (int index = 0; index < arraySize; index++) { final Element element = expandableArray.get(index); if (element == pointer) { - if (newSize != index) { + if (newIndex != index) { Log.w(TAG, "Found duplicated element in remove: " + pointer); } continue; // Remove this element from the expandableArray. } - if (newSize != index) { + if (newIndex != index) { // Shift this element toward the beginning of the expandableArray. - expandableArray.set(newSize, element); + expandableArray.set(newIndex, element); } - newSize++; + newIndex++; } - mArraySize = newSize; + mArraySize = newIndex; } } @@ -95,8 +101,8 @@ public final class PointerTrackerQueue { } final ArrayList expandableArray = mExpandableArrayOfActivePointers; final int arraySize = mArraySize; - int newSize, index; - for (newSize = index = 0; index < arraySize; index++) { + int newIndex, index; + for (newIndex = index = 0; index < arraySize; index++) { final Element element = expandableArray.get(index); if (element == pointer) { break; // Stop releasing elements. @@ -105,29 +111,30 @@ public final class PointerTrackerQueue { element.onPhantomUpEvent(eventTime); continue; // Remove this element from the expandableArray. } - if (newSize != index) { + if (newIndex != index) { // Shift this element toward the beginning of the expandableArray. - expandableArray.set(newSize, element); + expandableArray.set(newIndex, element); } - newSize++; + newIndex++; } // Shift rest of the expandableArray. int count = 0; for (; index < arraySize; index++) { final Element element = expandableArray.get(index); if (element == pointer) { - if (count > 0) { + count++; + if (count > 1) { Log.w(TAG, "Found duplicated element in releaseAllPointersOlderThan: " + pointer); } - count++; } - if (newSize != index) { - expandableArray.set(newSize, expandableArray.get(index)); - newSize++; + if (newIndex != index) { + // Shift this element toward the beginning of the expandableArray. + expandableArray.set(newIndex, expandableArray.get(index)); } + newIndex++; } - mArraySize = newSize; + mArraySize = newIndex; } } @@ -146,26 +153,26 @@ public final class PointerTrackerQueue { } final ArrayList expandableArray = mExpandableArrayOfActivePointers; final int arraySize = mArraySize; - int newSize = 0, count = 0; + int newIndex = 0, count = 0; for (int index = 0; index < arraySize; index++) { final Element element = expandableArray.get(index); if (element == pointer) { - if (count > 0) { + count++; + if (count > 1) { Log.w(TAG, "Found duplicated element in releaseAllPointersExcept: " + pointer); } - count++; } else { element.onPhantomUpEvent(eventTime); continue; // Remove this element from the expandableArray. } - if (newSize != index) { + if (newIndex != index) { // Shift this element toward the beginning of the expandableArray. - expandableArray.set(newSize, element); + expandableArray.set(newIndex, element); } - newSize++; + newIndex++; } - mArraySize = newSize; + mArraySize = newIndex; } } @@ -202,6 +209,9 @@ public final class PointerTrackerQueue { public void cancelAllPointerTracker() { synchronized (mExpandableArrayOfActivePointers) { + if (DEBUG) { + Log.d(TAG, "cancelAllPointerTracker: " + this); + } final ArrayList expandableArray = mExpandableArrayOfActivePointers; final int arraySize = mArraySize; for (int index = 0; index < arraySize; index++) { diff --git a/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java b/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java index a572daa8a..279559cfe 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java @@ -66,23 +66,23 @@ public class PointerTrackerQueueTests extends AndroidTestCase { private final PointerTrackerQueue mQueue = new PointerTrackerQueue(); public void testEmpty() { - assertEquals("empty queue", 0, mQueue.size()); - assertEquals("empty queue", "[]", mQueue.toString()); + assertEquals(0, mQueue.size()); + assertEquals("[]", mQueue.toString()); } public void testAdd() { mQueue.add(mElement1); - assertEquals("add element1", 1, mQueue.size()); - assertEquals("after adding element1", "[1]", mQueue.toString()); + assertEquals(1, mQueue.size()); + assertEquals("[1]", mQueue.toString()); mQueue.add(mElement2); - assertEquals("add element2", 2, mQueue.size()); - assertEquals("after adding element2", "[1 2]", mQueue.toString()); + assertEquals(2, mQueue.size()); + assertEquals("[1 2]", mQueue.toString()); mQueue.add(mElement3); - assertEquals("add element3", 3, mQueue.size()); - assertEquals("after adding element3", "[1 2 3]", mQueue.toString()); + assertEquals(3, mQueue.size()); + assertEquals("[1 2 3]", mQueue.toString()); mQueue.add(mElement4); - assertEquals("add element4", 4, mQueue.size()); - assertEquals("after adding element4", "[1 2 3 4]", mQueue.toString()); + assertEquals(4, mQueue.size()); + assertEquals("[1 2 3 4]", mQueue.toString()); } public void testRemove() { @@ -94,33 +94,29 @@ public class PointerTrackerQueueTests extends AndroidTestCase { mQueue.add(mElement4); mQueue.remove(mElement2); - assertEquals("remove element2", 3, mQueue.size()); - assertEquals("after removing element2", "[1 3 4]", mQueue.toString()); + assertEquals(3, mQueue.size()); + assertEquals("[1 3 4]", mQueue.toString()); mQueue.remove(mElement4); - assertEquals("remove element4", 2, mQueue.size()); - assertEquals("after removing element4", "[1 3]", mQueue.toString()); + assertEquals(2, mQueue.size()); + assertEquals("[1 3]", mQueue.toString()); mQueue.remove(mElement4); - assertEquals("remove element4 again", 2, mQueue.size()); - assertEquals("after removing element4 again", "[1 3]", mQueue.toString()); + assertEquals(2, mQueue.size()); + assertEquals("[1 3]", mQueue.toString()); mQueue.remove(mElement1); - assertEquals("remove element1", 1, mQueue.size()); - assertEquals("after removing element4", "[3]", mQueue.toString()); + assertEquals(1, mQueue.size()); + assertEquals("[3]", mQueue.toString()); mQueue.remove(mElement3); - assertEquals("remove element3", 0, mQueue.size()); - assertEquals("after removing element3", "[]", mQueue.toString()); + assertEquals(0, mQueue.size()); + assertEquals("[]", mQueue.toString()); mQueue.remove(mElement1); - assertEquals("remove element1 again", 0, mQueue.size()); - assertEquals("after removing element1 again", "[]", mQueue.toString()); + assertEquals(0, mQueue.size()); + assertEquals("[]", mQueue.toString()); - assertEquals("after remove elements", 0, Element.sPhantomUpCount); - assertEquals("after remove element1", - Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime); - assertEquals("after remove element2", - Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime); - assertEquals("after remove element3", - Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); - assertEquals("after remove element4", - Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); + assertEquals(0, Element.sPhantomUpCount); + assertEquals(Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } public void testAddAndRemove() { @@ -132,38 +128,34 @@ public class PointerTrackerQueueTests extends AndroidTestCase { mQueue.add(mElement4); mQueue.remove(mElement2); - assertEquals("remove element2", 3, mQueue.size()); - assertEquals("after removing element2", "[1 3 4]", mQueue.toString()); + assertEquals(3, mQueue.size()); + assertEquals("[1 3 4]", mQueue.toString()); mQueue.remove(mElement4); - assertEquals("remove element4", 2, mQueue.size()); - assertEquals("after removing element4", "[1 3]", mQueue.toString()); + assertEquals(2, mQueue.size()); + assertEquals("[1 3]", mQueue.toString()); mQueue.add(mElement2); - assertEquals("add element2", 3, mQueue.size()); - assertEquals("after adding element2", "[1 3 2]", mQueue.toString()); + assertEquals(3, mQueue.size()); + assertEquals("[1 3 2]", mQueue.toString()); mQueue.remove(mElement4); - assertEquals("remove element4 again", 3, mQueue.size()); - assertEquals("after removing element4 again", "[1 3 2]", mQueue.toString()); + assertEquals(3, mQueue.size()); + assertEquals("[1 3 2]", mQueue.toString()); mQueue.remove(mElement1); - assertEquals("remove element1", 2, mQueue.size()); - assertEquals("after removing element4", "[3 2]", mQueue.toString()); + assertEquals(2, mQueue.size()); + assertEquals("[3 2]", mQueue.toString()); mQueue.add(mElement1); - assertEquals("add element1", 3, mQueue.size()); - assertEquals("after adding element1", "[3 2 1]", mQueue.toString()); + assertEquals(3, mQueue.size()); + assertEquals("[3 2 1]", mQueue.toString()); mQueue.remove(mElement3); - assertEquals("remove element3", 2, mQueue.size()); - assertEquals("after removing element3", "[2 1]", mQueue.toString()); + assertEquals(2, mQueue.size()); + assertEquals("[2 1]", mQueue.toString()); mQueue.remove(mElement1); - assertEquals("remove element1 again", 1, mQueue.size()); - assertEquals("after removing element1 again", "[2]", mQueue.toString()); + assertEquals(1, mQueue.size()); + assertEquals("[2]", mQueue.toString()); - assertEquals("after remove element1", - Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime); - assertEquals("after remove element2", - Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime); - assertEquals("after remove element3", - Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); - assertEquals("after remove element4", - Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } public void testReleaseAllPointers() { @@ -176,20 +168,33 @@ public class PointerTrackerQueueTests extends AndroidTestCase { final long eventTime = 123; Element.sPhantomUpCount = 0; mQueue.releaseAllPointers(eventTime); - assertEquals("after releaseAllPointers", 4, Element.sPhantomUpCount); - assertEquals("after releaseAllPointers", 0, mQueue.size()); - assertEquals("after releaseAllPointers", "[]", mQueue.toString()); - assertEquals("after releaseAllPointers element1", - eventTime + 1, mElement1.mPhantomUpEventTime); - assertEquals("after releaseAllPointers element2", - eventTime + 2, mElement2.mPhantomUpEventTime); - assertEquals("after releaseAllPointers element3", - eventTime + 3, mElement3.mPhantomUpEventTime); - assertEquals("after releaseAllPointers element4", - eventTime + 4, mElement4.mPhantomUpEventTime); + assertEquals(4, Element.sPhantomUpCount); + assertEquals(0, mQueue.size()); + assertEquals("[]", mQueue.toString()); + assertEquals(eventTime + 1, mElement1.mPhantomUpEventTime); + assertEquals(eventTime + 2, mElement2.mPhantomUpEventTime); + assertEquals(eventTime + 3, mElement3.mPhantomUpEventTime); + assertEquals(eventTime + 4, mElement4.mPhantomUpEventTime); } - public void testReleaseAllPointersOlderThan() { + public void testReleaseAllPointersOlderThanFirst() { + mElement2.mIsModifier = true; + mQueue.add(mElement1); + mQueue.add(mElement2); + mQueue.add(mElement3); + + final long eventTime = 123; + Element.sPhantomUpCount = 0; + mQueue.releaseAllPointersOlderThan(mElement1, eventTime); + assertEquals(0, Element.sPhantomUpCount); + assertEquals(3, mQueue.size()); + assertEquals("[1 2 3]", mQueue.toString()); + assertEquals(Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); + } + + public void testReleaseAllPointersOlderThanLast() { mElement2.mIsModifier = true; mQueue.add(mElement1); mQueue.add(mElement2); @@ -199,20 +204,34 @@ public class PointerTrackerQueueTests extends AndroidTestCase { final long eventTime = 123; Element.sPhantomUpCount = 0; mQueue.releaseAllPointersOlderThan(mElement4, eventTime); - assertEquals("after releaseAllPointersOlderThan", 2, Element.sPhantomUpCount); - assertEquals("after releaseAllPointersOlderThan", 2, mQueue.size()); - assertEquals("after releaseAllPointersOlderThan", "[2 4]", mQueue.toString()); - assertEquals("after releaseAllPointersOlderThan element1", - eventTime + 1, mElement1.mPhantomUpEventTime); - assertEquals("after releaseAllPointersOlderThan element2", - Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime); - assertEquals("after releaseAllPointersOlderThan element3", - eventTime + 2, mElement3.mPhantomUpEventTime); - assertEquals("after releaseAllPointersOlderThan element4", - Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); + assertEquals(2, Element.sPhantomUpCount); + assertEquals(2, mQueue.size()); + assertEquals("[2 4]", mQueue.toString()); + assertEquals(eventTime + 1, mElement1.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime); + assertEquals(eventTime + 2, mElement3.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } - public void testReleaseAllPointersOlderThanWithoutModifier() { + public void testReleaseAllPointersOlderThanWithoutModifierMiddle() { + mQueue.add(mElement1); + mQueue.add(mElement2); + mQueue.add(mElement3); + mQueue.add(mElement4); + + final long eventTime = 123; + Element.sPhantomUpCount = 0; + mQueue.releaseAllPointersOlderThan(mElement3, eventTime); + assertEquals(2, Element.sPhantomUpCount); + assertEquals(2, mQueue.size()); + assertEquals("[3 4]", mQueue.toString()); + assertEquals(eventTime + 1, mElement1.mPhantomUpEventTime); + assertEquals(eventTime + 2, mElement2.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); + } + + public void testReleaseAllPointersOlderThanWithoutModifierLast() { mQueue.add(mElement1); mQueue.add(mElement2); mQueue.add(mElement3); @@ -221,19 +240,13 @@ public class PointerTrackerQueueTests extends AndroidTestCase { final long eventTime = 123; Element.sPhantomUpCount = 0; mQueue.releaseAllPointersOlderThan(mElement4, eventTime); - assertEquals("after releaseAllPointersOlderThan without modifier", - 3, Element.sPhantomUpCount); - assertEquals("after releaseAllPointersOlderThan without modifier", 1, mQueue.size()); - assertEquals("after releaseAllPointersOlderThan without modifier", - "[4]", mQueue.toString()); - assertEquals("after releaseAllPointersOlderThan without modifier element1", - eventTime + 1, mElement1.mPhantomUpEventTime); - assertEquals("after releaseAllPointersOlderThan without modifier element2", - eventTime + 2, mElement2.mPhantomUpEventTime); - assertEquals("after releaseAllPointersOlderThan without modifier element3", - eventTime + 3, mElement3.mPhantomUpEventTime); - assertEquals("after releaseAllPointersOlderThan without modifier element4", - Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); + assertEquals(3, Element.sPhantomUpCount); + assertEquals(1, mQueue.size()); + assertEquals("[4]", mQueue.toString()); + assertEquals(eventTime + 1, mElement1.mPhantomUpEventTime); + assertEquals(eventTime + 2, mElement2.mPhantomUpEventTime); + assertEquals(eventTime + 3, mElement3.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } public void testReleaseAllPointersExcept() { @@ -246,17 +259,13 @@ public class PointerTrackerQueueTests extends AndroidTestCase { final long eventTime = 123; Element.sPhantomUpCount = 0; mQueue.releaseAllPointersExcept(mElement3, eventTime); - assertEquals("after releaseAllPointersExcept", 3, Element.sPhantomUpCount); - assertEquals("after releaseAllPointersExcept", 1, mQueue.size()); - assertEquals("after releaseAllPointersExcept", "[3]", mQueue.toString()); - assertEquals("after releaseAllPointersExcept element1", - eventTime + 1, mElement1.mPhantomUpEventTime); - assertEquals("after releaseAllPointersExcept element2", - eventTime + 2, mElement2.mPhantomUpEventTime); - assertEquals("after releaseAllPointersExcept element3", - Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); - assertEquals("after releaseAllPointersExcept element4", - eventTime + 3, mElement4.mPhantomUpEventTime); + assertEquals(3, Element.sPhantomUpCount); + assertEquals(1, mQueue.size()); + assertEquals("[3]", mQueue.toString()); + assertEquals(eventTime + 1, mElement1.mPhantomUpEventTime); + assertEquals(eventTime + 2, mElement2.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); + assertEquals(eventTime + 3, mElement4.mPhantomUpEventTime); } public void testHasModifierKeyOlderThan() { @@ -268,54 +277,46 @@ public class PointerTrackerQueueTests extends AndroidTestCase { mQueue.add(mElement3); mQueue.add(mElement4); - assertFalse("hasModifierKeyOlderThan element1", mQueue.hasModifierKeyOlderThan(mElement1)); - assertFalse("hasModifierKeyOlderThan element2", mQueue.hasModifierKeyOlderThan(mElement2)); - assertFalse("hasModifierKeyOlderThan element3", mQueue.hasModifierKeyOlderThan(mElement3)); - assertFalse("hasModifierKeyOlderThan element4", mQueue.hasModifierKeyOlderThan(mElement4)); + assertFalse(mQueue.hasModifierKeyOlderThan(mElement1)); + assertFalse(mQueue.hasModifierKeyOlderThan(mElement2)); + assertFalse(mQueue.hasModifierKeyOlderThan(mElement3)); + assertFalse(mQueue.hasModifierKeyOlderThan(mElement4)); mElement2.mIsModifier = true; - assertFalse("hasModifierKeyOlderThan element1", mQueue.hasModifierKeyOlderThan(mElement1)); - assertFalse("hasModifierKeyOlderThan element2", mQueue.hasModifierKeyOlderThan(mElement2)); - assertTrue("hasModifierKeyOlderThan element3", mQueue.hasModifierKeyOlderThan(mElement3)); - assertTrue("hasModifierKeyOlderThan element4", mQueue.hasModifierKeyOlderThan(mElement4)); + assertFalse(mQueue.hasModifierKeyOlderThan(mElement1)); + assertFalse(mQueue.hasModifierKeyOlderThan(mElement2)); + assertTrue(mQueue.hasModifierKeyOlderThan(mElement3)); + assertTrue(mQueue.hasModifierKeyOlderThan(mElement4)); - assertEquals("after hasModifierKeyOlderThan", 0, Element.sPhantomUpCount); - assertEquals("after hasModifierKeyOlderThan", 4, mQueue.size()); - assertEquals("after hasModifierKeyOlderThan", "[1 2 3 4]", mQueue.toString()); - assertEquals("after hasModifierKeyOlderThan element1", - Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime); - assertEquals("after hasModifierKeyOlderThan element2", - Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime); - assertEquals("after hasModifierKeyOlderThan element3", - Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); - assertEquals("after hasModifierKeyOlderThan element4", - Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); + assertEquals(0, Element.sPhantomUpCount); + assertEquals(4, mQueue.size()); + assertEquals("[1 2 3 4]", mQueue.toString()); + assertEquals(Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } public void testIsAnyInSlidingKeyInput() { Element.sPhantomUpCount = 0; - assertFalse("isAnyInSlidingKeyInput empty", mQueue.isAnyInSlidingKeyInput()); + assertFalse(mQueue.isAnyInSlidingKeyInput()); mQueue.add(mElement1); mQueue.add(mElement2); mQueue.add(mElement3); mQueue.add(mElement4); - assertFalse("isAnyInSlidingKeyInput element1", mQueue.isAnyInSlidingKeyInput()); + assertFalse(mQueue.isAnyInSlidingKeyInput()); mElement3.mIsInSlidingKeyInput = true; - assertTrue("isAnyInSlidingKeyInput element1", mQueue.isAnyInSlidingKeyInput()); + assertTrue(mQueue.isAnyInSlidingKeyInput()); - assertEquals("after isAnyInSlidingKeyInput", 0, Element.sPhantomUpCount); - assertEquals("after isAnyInSlidingKeyInput", 4, mQueue.size()); - assertEquals("after isAnyInSlidingKeyInput", "[1 2 3 4]", mQueue.toString()); - assertEquals("after isAnyInSlidingKeyInput element1", - Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime); - assertEquals("after isAnyInSlidingKeyInput element2", - Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime); - assertEquals("after isAnyInSlidingKeyInput element3", - Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); - assertEquals("after isAnyInSlidingKeyInput element4", - Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); + assertEquals(0, Element.sPhantomUpCount); + assertEquals(4, mQueue.size()); + assertEquals("[1 2 3 4]", mQueue.toString()); + assertEquals(Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); + assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } }