69295e0657ad50d30652d9fcde21d45269ce2dc2
[platform/framework/web/crosswalk-tizen.git] /
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 };