aboutsummaryrefslogtreecommitdiffstats
path: root/src/scenario/Future.js
blob: 6c90df9d7cda31078500a03912f003f0db39f5d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function Future(name, behavior) {
  this.name = name;
  this.behavior = behavior;
  this.fulfilled = false;
  this.value = undefined;
}

Future.prototype = {
  fulfill: function(value) {
    this.fulfilled = true;
    this.value = value;
  }
};

function Matcher(future, logger) {
  var self = this;
  this.logger = logger;
  this.future = future;
}

Matcher.addMatcher = function(name, matcher){
  Matcher.prototype[name] = function(expected) {
    var future = this.future;
    $scenario.addFuture(
      'expect ' + future.name + ' ' + name + ' ' + expected,
      function(done){
        if (matcher(future.value, expected))
          throw "Expected " + expected + ' but was ' + future.value;
        done();
      }
    );
  };
};

Matcher.addMatcher('toEqual', function(a,b){ return a == b; });