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

Unified Diff: tests/stub-generator/src/MintMakerPromiseWithStubsTest-generatedTest.dart

Issue 8403040: Don't wait unnecessarily. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 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: tests/stub-generator/src/MintMakerPromiseWithStubsTest-generatedTest.dart
===================================================================
--- tests/stub-generator/src/MintMakerPromiseWithStubsTest-generatedTest.dart (revision 1134)
+++ tests/stub-generator/src/MintMakerPromiseWithStubsTest-generatedTest.dart (working copy)
@@ -8,7 +8,7 @@
/* class = Mint (tests/stub-generator/src/MintMakerPromiseWithStubsTest.dart/MintMakerPromiseWithStubsTest.dart: 9) */
-interface Mint$Proxy {
+interface Mint$Proxy extends Proxy {
Purse$Proxy createPurse(int balance);
}
@@ -61,7 +61,7 @@
/* class = Purse (tests/stub-generator/src/MintMakerPromiseWithStubsTest.dart/MintMakerPromiseWithStubsTest.dart: 17) */
-interface Purse$Proxy {
+interface Purse$Proxy extends Proxy {
Promise<int> queryBalance();
Purse$Proxy sproutPurse();
@@ -89,7 +89,7 @@
}
Promise<int> deposit(int amount, Purse$Proxy source) {
- return this.call(["deposit", amount, source]);
+ return new PromiseProxy<int>(this.call(["deposit", amount, source]));
}
}
@@ -110,13 +110,9 @@
int amount = message[1];
List<Promise<SendPort>> promises = new List<Promise<SendPort>>();
promises.add(new PromiseProxy<SendPort>(new Promise<SendPort>.fromValue(message[2])));
- Promise done = new Promise();
- done.waitFor(promises, 1);
- done.addCompleteHandler((_) {
- Purse$Proxy source = new Purse$ProxyImpl(promises[0]);
- int deposit = target.deposit(amount, source);
- reply(deposit);
- });
+ Purse$Proxy source = new Purse$ProxyImpl(promises[0]);
+ Promise<int> deposit = target.deposit(amount, source);
+ reply(deposit);
} else {
// TODO(kasperl,benl): Somehow throw an exception instead.
reply("Exception: command '" + command + "' not understood by Purse.");
@@ -150,7 +146,7 @@
int queryBalance();
Purse sproutPurse();
- int deposit(int amount, Purse$Proxy source);
+ Promise<int> deposit(int amount, Purse$Proxy source);
}
@@ -187,17 +183,21 @@
return _mint.createPurse(0);
}
- int deposit(int amount, Purse$Proxy proxy) {
+ Promise<int> deposit(int amount, Purse$Proxy proxy) {
if (amount < 0) throw "Ha ha";
// Because we are in the same isolate as the other purse, we can
// retrieve the proxy's local PurseImpl object and act on it
// directly. Further, a forged purse will not be convertible, and
// so an attempt to use it will fail.
- PurseImpl source = proxy.dynamic.local;
- if (source._balance < amount) throw "Not enough dough.";
- _balance += amount;
- source._balance -= amount;
- return _balance;
+ Promise<int> balance = new Promise<int>();
+ proxy.addCompleteHandler((_) {
+ PurseImpl source = proxy.dynamic.local;
+ if (source._balance < amount) throw "Not enough dough.";
+ _balance += amount;
+ source._balance -= amount;
+ balance.complete(_balance);
+ });
+ return balance;
}
Mint _mint;
@@ -218,19 +218,33 @@
// FIXME(benl): We should not have to manually order the calls
// like this.
Promise<int> result = sprouted.deposit(5, purse);
- expect.completesWithValue(result, 5);
+ Promise p1 = expect.completesWithValue(result, 5);
+ Promise<bool> p2 = new Promise<bool>();
+ Promise<bool> p3 = new Promise<bool>();
+ Promise<bool> p4 = new Promise<bool>();
+ Promise<bool> p5 = new Promise<bool>();
+ Promise<bool> p6 = new Promise<bool>();
result.addCompleteHandler((_) {
- expect.completesWithValue(sprouted.queryBalance(), 0 + 5);
- expect.completesWithValue(purse.queryBalance(), 100 - 5);
+ expect.completesWithValue(sprouted.queryBalance(), 0 + 5)
+ .then((_) => p2.complete(true));
+ expect.completesWithValue(purse.queryBalance(), 100 - 5)
+ .then((_) => p3.complete(true));
result = sprouted.deposit(42, purse);
- expect.completesWithValue(result, 5 + 42);
+ expect.completesWithValue(result, 5 + 42).then((_) => p4.complete(true));
result.addCompleteHandler((_) {
- expect.completesWithValue(sprouted.queryBalance(), 0 + 5 + 42);
- expect.completesWithValue(purse.queryBalance(), 100 - 5 - 42);
+ expect.completesWithValue(sprouted.queryBalance(), 0 + 5 + 42)
+ .then((_) => p5.complete(true));
+ expect.completesWithValue(purse.queryBalance(), 100 - 5 - 42)
+ .then((_) => p6.complete(true));
});
});
- expect.succeeded();
+ Promise<bool> done = new Promise<bool>();
+ done.waitFor([p1, p2, p3, p4, p5, p6], 6);
+ done.then((_) {
+ expect.succeeded();
+ print("##DONE##");
+ });
}
}
« no previous file with comments | « tests/stub-generator/src/MintMakerPromiseWithStubsTest.dart ('k') | tests/stub-generator/stub-generator.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698