1 | 'use strict';
|
2 |
|
3 | var ee = require('../');
|
4 |
|
5 | module.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 | };
|