simple-squiggle

A restricted subset of Squiggle
Log | Files | Refs | README

index.js (4835B)


      1 var Emitter = require('../index');
      2 var emitter = require('../instance');
      3 var test = require('tape');
      4 
      5 test('subscribes to an event', function (t) {
      6   var emitter = new Emitter();
      7   emitter.on('test', function () {});
      8 
      9   t.equal(emitter.e.test.length, 1, 'subscribed to event');
     10   t.end();
     11 });
     12 
     13 test('subscribes to an event with context', function (t) {
     14   var emitter = new Emitter();
     15   var context = {
     16     contextValue: true
     17   };
     18 
     19   emitter.on('test', function () {
     20     t.ok(this.contextValue, 'is in context');
     21     t.end();
     22   }, context);
     23 
     24   emitter.emit('test');
     25 });
     26 
     27 test('subscibes only once to an event', function (t) {
     28   var emitter = new Emitter();
     29 
     30   emitter.once('test', function () {
     31     t.notOk(emitter.e.test, 'removed event from list');
     32     t.end();
     33   });
     34 
     35   emitter.emit('test');
     36 });
     37 
     38 test('keeps context when subscribed only once', function (t) {
     39   var emitter = new Emitter();
     40   var context = {
     41     contextValue: true
     42   };
     43 
     44   emitter.once('test', function () {
     45     t.ok(this.contextValue, 'is in context');
     46     t.notOk(emitter.e.test, 'not subscribed anymore');
     47     t.end();
     48   }, context);
     49 
     50   emitter.emit('test');
     51 });
     52 
     53 test('emits an event', function (t) {
     54   var emitter = new Emitter();
     55 
     56   emitter.on('test', function () {
     57     t.ok(true, 'triggered event');
     58     t.end();
     59   });
     60 
     61   emitter.emit('test');
     62 });
     63 
     64 test('passes all arguments to event listener', function (t) {
     65   var emitter = new Emitter();
     66 
     67   emitter.on('test', function (arg1, arg2) {
     68     t.equal(arg1, 'arg1', 'passed the first argument');
     69     t.equal(arg2, 'arg2', 'passed the second argument');
     70     t.end();
     71   });
     72 
     73   emitter.emit('test', 'arg1', 'arg2');
     74 });
     75 
     76 test('unsubscribes from all events with name', function (t) {
     77   var emitter = new Emitter();
     78   emitter.on('test', function () {
     79     t.fail('should not get called');
     80   });
     81   emitter.off('test');
     82   emitter.emit('test')
     83 
     84   process.nextTick(function () {
     85     t.end();
     86   });
     87 });
     88 
     89 test('unsubscribes single event with name and callback', function (t) {
     90   var emitter = new Emitter();
     91   var fn = function () {
     92     t.fail('should not get called');
     93   }
     94 
     95   emitter.on('test', fn);
     96   emitter.off('test', fn);
     97   emitter.emit('test')
     98 
     99   process.nextTick(function () {
    100     t.end();
    101   });
    102 });
    103 
    104 // Test added by https://github.com/lazd
    105 // From PR: https://github.com/scottcorgan/tiny-emitter/pull/6
    106 test('unsubscribes single event with name and callback when subscribed twice', function (t) {
    107   var emitter = new Emitter();
    108   var fn = function () {
    109     t.fail('should not get called');
    110   };
    111 
    112   emitter.on('test', fn);
    113   emitter.on('test', fn);
    114 
    115   emitter.off('test', fn);
    116   emitter.emit('test');
    117 
    118   process.nextTick(function () {
    119     t.notOk(emitter.e['test'], 'removes all events');
    120     t.end();
    121   });
    122 });
    123 
    124 test('unsubscribes single event with name and callback when subscribed twice out of order', function (t) {
    125   var emitter = new Emitter();
    126   var calls = 0;
    127   var fn = function () {
    128     t.fail('should not get called');
    129   };
    130   var fn2 = function () {
    131     calls++;
    132   };
    133 
    134   emitter.on('test', fn);
    135   emitter.on('test', fn2);
    136   emitter.on('test', fn);
    137   emitter.off('test', fn);
    138   emitter.emit('test');
    139 
    140   process.nextTick(function () {
    141     t.equal(calls, 1, 'callback was called');
    142     t.end();
    143   });
    144 });
    145 
    146 test('removes an event inside another event', function (t) {
    147   var emitter = new Emitter();
    148 
    149   emitter.on('test', function () {
    150     t.equal(emitter.e.test.length, 1, 'event is still in list');
    151 
    152     emitter.off('test');
    153 
    154     t.notOk(emitter.e.test, 0, 'event is gone from list');
    155     t.end();
    156   });
    157 
    158   emitter.emit('test');
    159 });
    160 
    161 test('event is emitted even if unsubscribed in the event callback', function (t) {
    162   var emitter = new Emitter();
    163   var calls = 0;
    164   var fn = function () {
    165     calls += 1;
    166     emitter.off('test', fn);
    167   };
    168 
    169   emitter.on('test', fn);
    170 
    171   emitter.on('test', function () {
    172     calls += 1;
    173   });
    174 
    175   emitter.on('test', function () {
    176     calls += 1;
    177   });
    178 
    179   process.nextTick(function () {
    180     t.equal(calls, 3, 'all callbacks were called');
    181     t.end();
    182   });
    183 
    184   emitter.emit('test');
    185 });
    186 
    187 test('calling off before any events added does nothing', function (t) {
    188   var emitter = new Emitter();
    189   emitter.off('test', function () {});
    190   t.end();
    191 });
    192 
    193 test('emitting event that has not been subscribed to yet', function (t) {
    194   var emitter = new Emitter();
    195 
    196   emitter.emit('some-event', 'some message');
    197   t.end();
    198 });
    199 
    200 test('unsubscribes single event with name and callback which was subscribed once', function (t) {
    201   var emitter = new Emitter();
    202   var fn = function () {
    203     t.fail('event not unsubscribed');
    204   }
    205 
    206   emitter.once('test', fn);
    207   emitter.off('test', fn);
    208   emitter.emit('test');
    209 
    210   t.end();
    211 });
    212 
    213 test('exports an instance', function (t) {
    214   t.ok(emitter, 'exports an instance')
    215   t.ok(emitter instanceof Emitter, 'an instance of the Emitter class');
    216   t.end();
    217 });