| function shouldBe(expected, actual, msg) { |
| if (msg === void 0) |
| msg = ""; |
| else |
| msg = " for " + msg; |
| if (actual !== expected) |
| throw new Error("bad value" + msg + ": " + actual + ". Expected " + expected); |
| } |
| |
| function shouldBeAsync(expected, run, msg) { |
| let actual; |
| var hadError = false; |
| run().then(function(value) { actual = value; }, |
| function(error) { hadError = true; actual = error; }); |
| drainMicrotasks(); |
| |
| if (hadError) |
| throw actual; |
| |
| shouldBe(expected, actual, msg); |
| } |
| |
| var d = ({ x : "bar", y : function() { return async z => this.x + z; }}).y(); |
| var e = { x : "baz", y : d }; |
| |
| shouldBeAsync("barley", () => d("ley")); |
| shouldBeAsync("barley", () => e.y("ley")); |