Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(278)

Unified Diff: editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/TaskProcessorTest.java

Issue 11364134: Merge libv1. (Closed) Base URL: https://dart.googlecode.com/svn/experimental/lib_v2/dart
Patch Set: Reupload due to error Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/TaskProcessorTest.java
diff --git a/editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/TaskProcessorTest.java b/editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/TaskProcessorTest.java
index 2d75d6e37a77f9e2a22a0b151918cd9433453dd0..27349740762e833c488ba08c0e9187adc20307f9 100644
--- a/editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/TaskProcessorTest.java
+++ b/editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/TaskProcessorTest.java
@@ -47,7 +47,7 @@ public class TaskProcessorTest extends AbstractDartCoreTest {
}
}
- private static class BlockingIdleListener implements IdleListener {
+ private static class BlockingIdleListener implements TaskListener {
private final Object lock = new Object();
private boolean blocked = false;
@@ -66,6 +66,11 @@ public class TaskProcessorTest extends AbstractDartCoreTest {
}
}
+ @Override
+ public void processing(int toBeProcessed) {
+ // ignored
+ }
+
void unblock() {
synchronized (lock) {
blocked = false;
@@ -137,6 +142,44 @@ public class TaskProcessorTest extends AbstractDartCoreTest {
}
/**
+ * Assert that the idle operation gets executed after all tasks and after listeners have been
+ * notified that the processor is idle.
+ */
+ public void test_idleOperation() throws Exception {
+ BlockingTask blockingTask = new BlockingTask();
+ queue.addNewTask(blockingTask);
+
+ final boolean[] complete = {false};
+ processor.setIdleOperation(new Runnable() {
+ @Override
+ public void run() {
+ synchronized (complete) {
+ complete[0] = true;
+ complete.notifyAll();
+ }
+ }
+ });
+
+ assertFalse(complete[0]);
+ assertTrue(blockingTask.waitUntilStarted(FIVE_MINUTES_MS));
+ assertFalse(complete[0]);
+ final BlockingIdleListener blockingListener = new BlockingIdleListener();
+ processor.addIdleListener(blockingListener);
+ blockingTask.unblock();
+ assertTrue(blockingListener.waitUntilBlocked(FIVE_MINUTES_MS));
+ assertFalse(complete[0]);
+ processor.removeIdleListener(blockingListener);
+ blockingListener.unblock();
+
+ synchronized (complete) {
+ if (!complete[0]) {
+ complete.wait(100);
+ }
+ }
+ assertTrue(complete[0]);
+ }
+
+ /**
* Assert single idle -> run -> idle sequence
*/
public void test_perform() throws Exception {

Powered by Google App Engine
This is Rietveld 408576698