summaryrefslogtreecommitdiffstats
path: root/luni
diff options
context:
space:
mode:
authorJesse Wilson <jessewilson@google.com>2011-08-14 15:20:14 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-08-14 15:20:14 -0700
commit994bc38eba42e36432baf1c3565d4b826452a960 (patch)
treeade9bb87a6d902f4d3d92a34e7095f779b884ec7 /luni
parent4cb096078bc5b189b72970ede771d1cab9f7e6cb (diff)
parentf296f0cb984fb2435bedad23439c1fdc2ad61bd0 (diff)
downloadlibcore-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.java94
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 {