|
- 'use strict';
-
- var ee = require('../');
-
- module.exports = function (t) {
-
- return {
- "": function (a) {
- var x = {}, y = {}, z = {}, count, count2, count3;
-
- ee(x);
- ee(y);
- ee(z);
-
- count = 0;
- count2 = 0;
- count3 = 0;
- x.on('foo', function () { ++count; });
- y.on('foo', function () { ++count2; });
- z.on('foo', function () { ++count3; });
-
- x.emit('foo');
- a(count, 1, "Pre unify, x");
- a(count2, 0, "Pre unify, y");
- a(count3, 0, "Pre unify, z");
-
- t(x, y);
- a(x.__ee__, y.__ee__, "Post unify y");
- x.emit('foo');
- a(count, 2, "Post unify, x");
- a(count2, 1, "Post unify, y");
- a(count3, 0, "Post unify, z");
-
- y.emit('foo');
- a(count, 3, "Post unify, on y, x");
- a(count2, 2, "Post unify, on y, y");
- a(count3, 0, "Post unify, on y, z");
-
- t(x, z);
- a(x.__ee__, x.__ee__, "Post unify z");
- x.emit('foo');
- a(count, 4, "Post unify z, x");
- a(count2, 3, "Post unify z, y");
- a(count3, 1, "Post unify z, z");
- },
- "On empty": function (a) {
- var x = {}, y = {}, z = {}, count, count2, count3;
-
- ee(x);
- ee(y);
- ee(z);
-
- count = 0;
- count2 = 0;
- count3 = 0;
- y.on('foo', function () { ++count2; });
- x.emit('foo');
- a(count, 0, "Pre unify, x");
- a(count2, 0, "Pre unify, y");
- a(count3, 0, "Pre unify, z");
-
- t(x, y);
- a(x.__ee__, y.__ee__, "Post unify y");
- x.on('foo', function () { ++count; });
- x.emit('foo');
- a(count, 1, "Post unify, x");
- a(count2, 1, "Post unify, y");
- a(count3, 0, "Post unify, z");
-
- y.emit('foo');
- a(count, 2, "Post unify, on y, x");
- a(count2, 2, "Post unify, on y, y");
- a(count3, 0, "Post unify, on y, z");
-
- t(x, z);
- a(x.__ee__, z.__ee__, "Post unify z");
- z.on('foo', function () { ++count3; });
- x.emit('foo');
- a(count, 3, "Post unify z, x");
- a(count2, 3, "Post unify z, y");
- a(count3, 1, "Post unify z, z");
- },
- Many: function (a) {
- var x = {}, y = {}, z = {}, count, count2, count3;
-
- ee(x);
- ee(y);
- ee(z);
-
- count = 0;
- count2 = 0;
- count3 = 0;
- x.on('foo', function () { ++count; });
- y.on('foo', function () { ++count2; });
- y.on('foo', function () { ++count2; });
- z.on('foo', function () { ++count3; });
-
- x.emit('foo');
- a(count, 1, "Pre unify, x");
- a(count2, 0, "Pre unify, y");
- a(count3, 0, "Pre unify, z");
-
- t(x, y);
- a(x.__ee__, y.__ee__, "Post unify y");
- x.emit('foo');
- a(count, 2, "Post unify, x");
- a(count2, 2, "Post unify, y");
- a(count3, 0, "Post unify, z");
-
- y.emit('foo');
- a(count, 3, "Post unify, on y, x");
- a(count2, 4, "Post unify, on y, y");
- a(count3, 0, "Post unify, on y, z");
-
- t(x, z);
- a(x.__ee__, x.__ee__, "Post unify z");
- x.emit('foo');
- a(count, 4, "Post unify z, x");
- a(count2, 6, "Post unify z, y");
- a(count3, 1, "Post unify z, z");
- }
- };
- };
|