diff options
author | Jesse Wilson <jessewilson@google.com> | 2011-08-14 15:20:14 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-14 15:20:14 -0700 |
commit | 994bc38eba42e36432baf1c3565d4b826452a960 (patch) | |
tree | ade9bb87a6d902f4d3d92a34e7095f779b884ec7 /luni | |
parent | 4cb096078bc5b189b72970ede771d1cab9f7e6cb (diff) | |
parent | f296f0cb984fb2435bedad23439c1fdc2ad61bd0 (diff) | |
download | libcore-994bc38eba42e36432baf1c3565d4b826452a960.zip libcore-994bc38eba42e36432baf1c3565d4b826452a960.tar.gz libcore-994bc38eba42e36432baf1c3565d4b826452a960.tar.bz2 |
Merge "Fix a racy preferences test to not rely on disk flush latency."
Diffstat (limited to 'luni')
-rw-r--r-- | luni/src/test/java/libcore/java/util/prefs/OldAbstractPreferencesTest.java | 94 |
1 files changed, 42 insertions, 52 deletions
diff --git a/luni/src/test/java/libcore/java/util/prefs/OldAbstractPreferencesTest.java b/luni/src/test/java/libcore/java/util/prefs/OldAbstractPreferencesTest.java index 7f0c9b6..2eb373d 100644 --- a/luni/src/test/java/libcore/java/util/prefs/OldAbstractPreferencesTest.java +++ b/luni/src/test/java/libcore/java/util/prefs/OldAbstractPreferencesTest.java @@ -44,6 +44,8 @@ public final class OldAbstractPreferencesTest extends TestCase { parent = (AbstractPreferences) Preferences.userNodeForPackage(this.getClass()); pref = (AbstractPreferences) parent.node(nodeName); + assertEquals(0, pref.childrenNames().length); + assertEquals(0, pref.keys().length); } public void testToString() { @@ -861,109 +863,97 @@ public final class OldAbstractPreferencesTest extends TestCase { class MockPreferenceChangeListener implements PreferenceChangeListener { private boolean flagChange = false; - public void preferenceChange(PreferenceChangeEvent arg0) { + public synchronized void preferenceChange(PreferenceChangeEvent arg0) { flagChange = true; + notifyAll(); } - public boolean isChanged () { - boolean retVal = flagChange; + public synchronized void assertChanged(boolean expected) throws InterruptedException { + wait(100); + assertEquals(expected, flagChange); flagChange = false; - return retVal; } } - public void testAddPreferenceChangeListener() throws BackingStoreException { + public void testAddPreferenceChangeListener() throws Exception { MockPreferenceChangeListener mpcl = new MockPreferenceChangeListener(); parent.addPreferenceChangeListener(mpcl); - assertFalse(mpcl.isChanged()); + mpcl.assertChanged(false); pref.node("new node"); - pref.flush(); - parent.flush(); - assertFalse(mpcl.isChanged()); + mpcl.assertChanged(false); parent.node("new node"); - parent.flush(); - assertFalse(mpcl.isChanged()); + mpcl.assertChanged(false); parent.putInt("IntValue", 33); - parent.flush(); - parent.flush(); - assertTrue(mpcl.isChanged()); + mpcl.assertChanged(true); assertEquals(33, parent.getInt("IntValue", 22)); - parent.flush(); - assertFalse(mpcl.isChanged()); + mpcl.assertChanged(false); assertEquals(22, parent.getInt("Missed Value", 22)); - parent.flush(); - assertFalse(mpcl.isChanged()); + mpcl.assertChanged(false); } - public void testRemovePreferenceChangeListener() throws BackingStoreException { + public void testRemovePreferenceChangeListener() throws Exception { MockPreferenceChangeListener mpcl = new MockPreferenceChangeListener(); parent.addPreferenceChangeListener(mpcl); - assertFalse(mpcl.isChanged()); + mpcl.assertChanged(false); parent.putInt("IntValue", 33); - parent.flush(); - assertTrue(mpcl.isChanged()); + mpcl.assertChanged(true); parent.removePreferenceChangeListener(mpcl); parent.putInt("IntValue", 33); - parent.flush(); - assertFalse(mpcl.isChanged()); + mpcl.assertChanged(false); } class MockNodeChangeListener implements NodeChangeListener { private boolean flagAdded = false; private boolean flagRemoved = false; - public void childAdded(NodeChangeEvent arg0) { + public synchronized void childAdded(NodeChangeEvent arg0) { flagAdded = true; + notifyAll(); } - public void childRemoved(NodeChangeEvent arg0) { + public synchronized void childRemoved(NodeChangeEvent arg0) { flagRemoved = true; + notifyAll(); } - public boolean isAdded() { - return flagAdded; + public synchronized void assertAdded(boolean expected) throws InterruptedException { + wait(100); + assertEquals(expected, flagAdded); } - public boolean isRemoved() { - return flagRemoved; + public synchronized void assertRemoved(boolean expected) throws InterruptedException { + wait(100); + assertEquals(expected, flagRemoved); } } - public void testAddNodeChangeListener() throws BackingStoreException { + public void testAddNodeChangeListener() throws Exception { MockNodeChangeListener mncl = new MockNodeChangeListener(); parent.addNodeChangeListener(mncl); pref.node("test"); - pref.flush(); - parent.flush(); - assertFalse(mncl.isAdded()); - assertFalse(mncl.isRemoved()); + mncl.assertAdded(false); + mncl.assertRemoved(false); pref.removeNode(); - parent.flush(); - assertFalse(mncl.isAdded()); - assertTrue(mncl.isRemoved()); + mncl.assertAdded(false); + mncl.assertRemoved(true); parent.node("new node"); - parent.flush(); - assertTrue(mncl.isAdded()); - assertTrue(mncl.isRemoved()); + mncl.assertAdded(true); + mncl.assertRemoved(true); } - public void testRemoveNodeChangeListener() throws BackingStoreException { + public void testRemoveNodeChangeListener() throws BackingStoreException, InterruptedException { MockNodeChangeListener mncl = new MockNodeChangeListener(); parent.addNodeChangeListener(mncl); pref.node("test"); - pref.flush(); - parent.flush(); - assertFalse(mncl.isAdded()); - assertFalse(mncl.isRemoved()); + mncl.assertAdded(false); + mncl.assertRemoved(false); parent.removeNodeChangeListener(mncl); pref.removeNode(); - parent.flush(); - assertFalse(mncl.isAdded()); - assertFalse(mncl.isRemoved()); + mncl.assertAdded(false); + mncl.assertRemoved(false); parent.node("new node"); - parent.flush(); - assertFalse(mncl.isAdded()); - assertFalse(mncl.isRemoved()); + mncl.assertAdded(false); + mncl.assertRemoved(false); } public void testExportNode() throws BackingStoreException, IOException, InvalidPreferencesFormatException { |