UNPKG

2.82 kBJavaScriptView Raw
1'use strict';
2
3var ee = require('../');
4
5module.exports = function (t) {
6
7 return {
8 "": function (a) {
9 var x = {}, y = {}, z = {}, count, count2, count3;
10
11 ee(x);
12 ee(y);
13 ee(z);
14
15 count = 0;
16 count2 = 0;
17 count3 = 0;
18 x.on('foo', function () { ++count; });
19 y.on('foo', function () { ++count2; });
20 z.on('foo', function () { ++count3; });
21
22 x.emit('foo');
23 a(count, 1, "Pre unify, x");
24 a(count2, 0, "Pre unify, y");
25 a(count3, 0, "Pre unify, z");
26
27 t(x, y);
28 a(x.__ee__, y.__ee__, "Post unify y");
29 x.emit('foo');
30 a(count, 2, "Post unify, x");
31 a(count2, 1, "Post unify, y");
32 a(count3, 0, "Post unify, z");
33
34 y.emit('foo');
35 a(count, 3, "Post unify, on y, x");
36 a(count2, 2, "Post unify, on y, y");
37 a(count3, 0, "Post unify, on y, z");
38
39 t(x, z);
40 a(x.__ee__, x.__ee__, "Post unify z");
41 x.emit('foo');
42 a(count, 4, "Post unify z, x");
43 a(count2, 3, "Post unify z, y");
44 a(count3, 1, "Post unify z, z");
45 },
46 "On empty": function (a) {
47 var x = {}, y = {}, z = {}, count, count2, count3;
48
49 ee(x);
50 ee(y);
51 ee(z);
52
53 count = 0;
54 count2 = 0;
55 count3 = 0;
56 y.on('foo', function () { ++count2; });
57 x.emit('foo');
58 a(count, 0, "Pre unify, x");
59 a(count2, 0, "Pre unify, y");
60 a(count3, 0, "Pre unify, z");
61
62 t(x, y);
63 a(x.__ee__, y.__ee__, "Post unify y");
64 x.on('foo', function () { ++count; });
65 x.emit('foo');
66 a(count, 1, "Post unify, x");
67 a(count2, 1, "Post unify, y");
68 a(count3, 0, "Post unify, z");
69
70 y.emit('foo');
71 a(count, 2, "Post unify, on y, x");
72 a(count2, 2, "Post unify, on y, y");
73 a(count3, 0, "Post unify, on y, z");
74
75 t(x, z);
76 a(x.__ee__, z.__ee__, "Post unify z");
77 z.on('foo', function () { ++count3; });
78 x.emit('foo');
79 a(count, 3, "Post unify z, x");
80 a(count2, 3, "Post unify z, y");
81 a(count3, 1, "Post unify z, z");
82 },
83 Many: function (a) {
84 var x = {}, y = {}, z = {}, count, count2, count3;
85
86 ee(x);
87 ee(y);
88 ee(z);
89
90 count = 0;
91 count2 = 0;
92 count3 = 0;
93 x.on('foo', function () { ++count; });
94 y.on('foo', function () { ++count2; });
95 y.on('foo', function () { ++count2; });
96 z.on('foo', function () { ++count3; });
97
98 x.emit('foo');
99 a(count, 1, "Pre unify, x");
100 a(count2, 0, "Pre unify, y");
101 a(count3, 0, "Pre unify, z");
102
103 t(x, y);
104 a(x.__ee__, y.__ee__, "Post unify y");
105 x.emit('foo');
106 a(count, 2, "Post unify, x");
107 a(count2, 2, "Post unify, y");
108 a(count3, 0, "Post unify, z");
109
110 y.emit('foo');
111 a(count, 3, "Post unify, on y, x");
112 a(count2, 4, "Post unify, on y, y");
113 a(count3, 0, "Post unify, on y, z");
114
115 t(x, z);
116 a(x.__ee__, x.__ee__, "Post unify z");
117 x.emit('foo');
118 a(count, 4, "Post unify z, x");
119 a(count2, 6, "Post unify z, y");
120 a(count3, 1, "Post unify z, z");
121 }
122 };
123};