diff options
author | kkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-04 01:24:46 +0000 |
---|---|---|
committer | kkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-04 01:24:46 +0000 |
commit | 0dfbb9e1db98b3b15f77080cf5ab957bda3f11fb (patch) | |
tree | 959941ef780a911a9c44e71b2f7bb1869ea0c74c /base/android/javatests/src/org/chromium | |
parent | 506cffda1d172de96de10167d82ed0cf1a7358e0 (diff) | |
download | chromium_src-0dfbb9e1db98b3b15f77080cf5ab957bda3f11fb.zip chromium_src-0dfbb9e1db98b3b15f77080cf5ab957bda3f11fb.tar.gz chromium_src-0dfbb9e1db98b3b15f77080cf5ab957bda3f11fb.tar.bz2 |
[Android] Add reinitiate() to ObserverList's iterator.
If we need to iterate an ObserverList multiple times, we can avoid iterator object
reallocation by using this reinitiate() method.
BUG=273217
Review URL: https://chromiumcodereview.appspot.com/22824044
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221105 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/android/javatests/src/org/chromium')
-rw-r--r-- | base/android/javatests/src/org/chromium/base/ObserverListTest.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/base/android/javatests/src/org/chromium/base/ObserverListTest.java b/base/android/javatests/src/org/chromium/base/ObserverListTest.java index 10c898c..8a17445 100644 --- a/base/android/javatests/src/org/chromium/base/ObserverListTest.java +++ b/base/android/javatests/src/org/chromium/base/ObserverListTest.java @@ -7,6 +7,7 @@ package org.chromium.base; import android.test.InstrumentationTestCase; import android.test.suitebuilder.annotation.SmallTest; +import org.chromium.base.ObserverList; import org.chromium.base.test.util.Feature; import java.lang.Iterable; @@ -177,4 +178,43 @@ public class ObserverListTest extends InstrumentationTestCase { } assertTrue(noElementExceptionThrown); } + + @SmallTest + @Feature({"Android-AppBase"}) + public void testRewindableIterator() { + ObserverList<Integer> observerList = new ObserverList<Integer>(); + observerList.addObserver(5); + observerList.addObserver(10); + observerList.addObserver(15); + assertEquals(3, getSizeOfIterable(observerList)); + + ObserverList.RewindableIterator<Integer> it = observerList.rewindableIterator(); + assertTrue(it.hasNext()); + assertTrue(5 == it.next()); + assertTrue(it.hasNext()); + assertTrue(10 == it.next()); + assertTrue(it.hasNext()); + assertTrue(15 == it.next()); + assertFalse(it.hasNext()); + + it.rewind(); + + assertTrue(it.hasNext()); + assertTrue(5 == it.next()); + assertTrue(it.hasNext()); + assertTrue(10 == it.next()); + assertTrue(it.hasNext()); + assertTrue(15 == it.next()); + assertEquals(5, (int) observerList.mObservers.get(0)); + observerList.removeObserver(5); + assertEquals(null, observerList.mObservers.get(0)); + + it.rewind(); + + assertEquals(10, (int) observerList.mObservers.get(0)); + assertTrue(it.hasNext()); + assertTrue(10 == it.next()); + assertTrue(it.hasNext()); + assertTrue(15 == it.next()); + } } |