| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199 |
1
1
1
1
1
1
6
1
1
1
1
2
2
2
1
1
1
1
1
1
2
1
1
1
1
1
1
1
1
1
1
1
1
| 'use strict';
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _chai = require('chai');
var _src = require('../src');
var _src2 = _interopRequireDefault(_src);
describe('ranking-set', function () {
beforeEach(function () {
this.ranking = new _src2['default']({ maxScore: 30, branchFactor: 3 });
});
it('should start with only the root node', function () {
(0, _chai.expect)(this.ranking.tree).to.eql({
amount: 0,
children: null
});
});
describe('given an player with a non-number id', function () {
beforeEach(function () {
try {
this.ranking.setScore({ score: 4, playerId: 'jack' });
} catch (e) {
this.errorMessage = e;
}
});
it('should throw an expection', function () {
(0, _chai.expect)(this.errorMessage).to.eql(new Error('playerId must be a number'));
});
it('should not inlcude him in the ranking', function () {
(0, _chai.expect)(this.ranking.tree).to.eql({
amount: 0,
children: null
});
});
});
describe('given an player with score 4', function () {
beforeEach(function () {
this.ranking.setScore({ score: 4, playerId: 10 });
});
it('should stores the player\'s id in the node for score 4', function () {
(0, _chai.expect)(this.ranking.tree).to.eql({
amount: 1,
children: [
// 0-9
{
amount: 1,
children: [
// 0-2
{ amount: 0 },
// 3-5
{
amount: 1,
children: [
// 3
{ amount: 0 },
// 4
{
amount: 1,
score: 4,
playerIds: [10]
}, { amount: 0 }]
},
// 6-9
{ amount: 0 }]
},
// 10-19
{ amount: 0 },
// 20-29
{ amount: 0 }]
});
});
describe('given an player with score 18', function () {
beforeEach(function () {
this.ranking.setScore({ score: 18, playerId: 15 });
});
it('should stores the player\'s id in the node for score 18', function () {
(0, _chai.expect)(this.ranking.tree).to.eql({
amount: 2,
children: [
// 0-9
{
amount: 1,
children: [
// 0-2
{ amount: 0 },
// 3-5
{
amount: 1,
children: [
// 3
{ amount: 0 },
// 4
{
amount: 1,
score: 4,
playerIds: [10]
}, { amount: 0 }]
},
// 6-9
{ amount: 0 }]
},
// 10-19
{
amount: 1,
children: [
// 10-12
{ amount: 0 },
// 13-15
{ amount: 0 },
// 16-19
{
amount: 1,
children: [
// 16
{ amount: 0 },
// 17
{ amount: 0 },
// 18-19
{
amount: 1,
children: [
// 18
{
amount: 1,
score: 18,
playerIds: [15]
},
// 19
{ amount: 0 }]
}]
}]
},
// 20-29
{ amount: 0 }]
});
});
});
});
describe('given an player with score 9', function () {
beforeEach(function () {
this.ranking.setScore({ score: 9, playerId: 10 });
});
it('should stores the player\'s id in the node for score 9', function () {
(0, _chai.expect)(this.ranking.tree).to.eql({
amount: 1,
children: [
// 0-9
{
amount: 1,
children: [
// 0-2
{ amount: 0 },
// 3-5
{ amount: 0 },
// 6-9
{
amount: 1,
children: [
// 6
{ amount: 0 },
// 7
{ amount: 0 },
// 8-9
{
amount: 1,
children: [
// 8
{ amount: 0 },
// 9
{
amount: 1,
score: 9,
playerIds: [10]
}]
}]
}]
},
// 10-19
{ amount: 0 },
// 20-29
{ amount: 0 }]
});
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXhjbnVuZXMvRGV2ZWxvcG1lbnQvbWUvcmFua2luZy9zcGVjL3Jhbmtpbmctc2V0LnNwZWMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztvQkFBdUIsTUFBTTs7bUJBQ1QsUUFBUTs7OztBQUc1QixRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVk7QUFDbEMsWUFBVSxDQUFDLFlBQVk7QUFDckIsUUFBSSxDQUFDLE9BQU8sR0FBRyxxQkFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7R0FDL0QsQ0FBQyxDQUFDOztBQUVILElBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxZQUFZO0FBQ3JELGNBVkssTUFBTSxFQVVKLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztBQUMvQixZQUFNLEVBQUUsQ0FBQztBQUNULGNBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQyxDQUFDO0dBQ0osQ0FBQyxDQUFDOztBQUVILFVBQVEsQ0FBQyxzQ0FBc0MsRUFBRSxZQUFZO0FBQzNELGNBQVUsQ0FBQyxZQUFZO0FBQ3JCLFVBQUk7QUFDRixZQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7T0FDdkQsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNWLFlBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO09BQ3ZCO0tBQ0YsQ0FBQyxDQUFDOztBQUVILE1BQUUsQ0FBQywyQkFBMkIsRUFBRSxZQUFZO0FBQzFDLGdCQTFCRyxNQUFNLEVBMEJGLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztLQUMxRSxDQUFDLENBQUM7O0FBRUgsTUFBRSxDQUFDLHVDQUF1QyxFQUFF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QUNGO2FBQ0YsQ0FDRjtXQUNGLENBQ0Y7U0FDRjs7QUFFRCxVQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7O0FBRWIsVUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQ2Q7T0FDRixDQUFDLENBQUM7S0FDSixDQUFDLENBQUM7R0FDSixDQUFDLENBQUM7Q0FDSixDQUFDLENBQUMiLCJmaWxlIjoiL1VzZXJzL21heGNudW5lcy9EZXZlbG9wbWVudC9tZS9yYW5raW5nL3NwZWMvcmFua2luZy1zZXQuc3BlYy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCB9IGZyb20gJ2NoYWknO1xuaW1wb3J0IFJhbmtpbmcgZnJvbSAnLi4vc3JjJztcblxuXG5kZXNjcmliZSgncmFua2luZy1zZXQnLCBmdW5jdGlvbiAoKSB7XG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmFua2luZyA9IG5ldyBSYW5raW5nKHsgbWF4U2NvcmU6IDMwLCBicmFuY2hGYWN0b3I6IDMgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc3RhcnQgd2l0aCBvbmx5IHRoZSByb290IG5vZGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgZXhwZWN0KHRoaXMucmFua2luZy50cmVlKS50by5lcWwoe1xuICAgICAgYW1vdW50OiAwLFxuICAgICAgY2hpbGRyZW46IG51bGxcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dpdmVuIGFuIHBsYXllciB3aXRoIGEgbm9uLW51bWJlciBpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucmFua2luZy5zZXRTY29yZSh7IHNjb3JlOiA0LCBwbGF5ZXJJZDogJ2phY2snIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGV4cGVjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGV4cGVjdCh0aGlzLmVycm9yTWVzc2FnZSkudG8uZXFsKG5ldyBFcnJvcigncGxheWVySWQgbXVzdCBiZSBhIG51bWJlcicpKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGlubGN1ZGUgaGltIGluIHRoZSByYW5raW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgZXhwZWN0KHRoaXMucmFua2luZy50cmVlKS50by5lcWwoe1xuICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgIGNoaWxkcmVuOiBudWxsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dpdmVuIGFuIHBsYXllciB3aXRoIHNjb3JlIDQnLCBmdW5jdGlvbiAoKSB7XG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnJhbmtpbmcuc2V0U2NvcmUoeyBzY29yZTogNCwgcGxheWVySWQ6IDEwIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdG9yZXMgdGhlIHBsYXllclxcJ3MgaWQgaW4gdGhlIG5vZGUgZm9yIHNjb3JlIDQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBleHBlY3QodGhpcy5yYW5raW5nLnRyZWUpLnRvLmVxbCh7XG4gICAgICAgIGFtb3VudDogMSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAvLyAwLTlcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbW91bnQ6IDEsXG4gICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAvLyAwLTJcbiAgICAgICAgICAgICAgeyBhbW91bnQ6IDAgfSxcbiAgICAgICAgICAgICAgLy8gMy01XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhbW91bnQ6IDEsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgIC8vIDNcbiAgICAgICAgICAgICAgICAgIHsgYW1vdW50OiAwIH0sXG4gICAgICAgICAgICAgICAgICAvLyA0XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFtb3VudDogMSxcbiAgICAgICAgICAgICAgICAgICAgc2NvcmU6IDQsXG4gICAgICAgICAgICAgICAgICAgIHBsYXllcklkczogWyAxMCBdXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IDAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLy8gNi05XG4gICAgICAgICAgICAgIHsgYW1vdW50OiAwIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIDEwLTE5XG4gICAgICAgICAgeyBhbW91bnQ6IDAgfSxcbiAgICAgICAgICAvLyAyMC0yOVxuICAgICAgICAgIHsgYW1vdW50OiAwIH1cbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZ2l2ZW4gYW4gcGxheWVyIHdpdGggc2NvcmUgMTgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5yYW5raW5nLnNldFNjb3JlKHsgc2NvcmU6IDE4LCBwbGF5ZXJJZDogMTUgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBzdG9yZXMgdGhlIHBsYXllclxcJ3MgaWQgaW4gdGhlIG5vZGUgZm9yIHNjb3JlIDE4JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBleHBlY3QodGhpcy5yYW5raW5nLnRyZWUpLnRvLmVxbCh7XG4gICAgICAgICAgYW1vdW50OiAyLFxuICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAvLyAwLTlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYW1vdW50OiAxLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgIC8vIDAtMlxuICAgICAgICAgICAgICAgIHsgYW1vdW50OiAwIH0sXG4gICAgICAgICAgICAgICAgLy8gMy01XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYW1vdW50OiAxLFxuICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gM1xuICAgICAgICAgICAgICAgICAgICB7IGFtb3VudDogMCB9LFxuICAgICAgICAgICAgICAgICAgICAvLyA0XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgc2NvcmU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgcGxheWVySWRzOiBbIDEwIF1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IDAgfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gNi05XG4gICAgICAgICAgICAgICAgeyBhbW91bnQ6IDAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gMTAtMTlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYW1vdW50OiAxLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgIC8vIDEwLTEyXG4gICAgICAgICAgICAgICAgeyBhbW91bnQ6IDAgfSxcbiAgICAgICAgICAgICAgICAvLyAxMy0xNVxuICAgICAgICAgICAgICAgIHsgYW1vdW50OiAwIH0sXG4gICAgICAgICAgICAgICAgLy8gMTYtMTlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhbW91bnQ6IDEsXG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgICAvLyAxNlxuICAgICAgICAgICAgICAgICAgICB7IGFtb3VudDogMCB9LFxuICAgICAgICAgICAgICAgICAgICAvLyAxN1xuICAgICAgICAgICAgICAgICAgICB7IGFtb3VudDogMCB9LFxuICAgICAgICAgICAgICAgICAgICAvLyAxOC0xOVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiAxLFxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAxOFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JlOiAxOCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVySWRzOiBbIDE1IF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAxOVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IDAgfVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIDIwLTI5XG4gICAgICAgICAgICB7IGFtb3VudDogMCB9XG4gICAgICAgICAgXVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2l2ZW4gYW4gcGxheWVyIHdpdGggc2NvcmUgOScsIGZ1bmN0aW9uICgpIHtcbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMucmFua2luZy5zZXRTY29yZSh7IHNjb3JlOiA5LCBwbGF5ZXJJZDogMTAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN0b3JlcyB0aGUgcGxheWVyXFwncyBpZCBpbiB0aGUgbm9kZSBmb3Igc2NvcmUgOScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGV4cGVjdCh0aGlzLnJhbmtpbmcudHJlZSkudG8uZXFsKHtcbiAgICAgICAgYW1vdW50OiAxLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIC8vIDAtOVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFtb3VudDogMSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgIC8vIDAtMlxuICAgICAgICAgICAgICB7IGFtb3VudDogMCB9LFxuICAgICAgICAgICAgICAvLyAzLTVcbiAgICAgICAgICAgICAgeyBhbW91bnQ6IDAgfSxcbiAgICAgICAgICAgICAgLy8gNi05XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhbW91bnQ6IDEsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgIC8vIDZcbiAgICAgICAgICAgICAgICAgIHsgYW1vdW50OiAwIH0sXG4gICAgICAgICAgICAgICAgICAvLyA3XG4gICAgICAgICAgICAgICAgICB7IGFtb3VudDogMCB9LFxuICAgICAgICAgICAgICAgICAgLy8gOC05XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFtb3VudDogMSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAvLyA4XG4gICAgICAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IDAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyA5XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmU6IDksXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXJJZHM6IFsgMTAgXVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gMTAtMTlcbiAgICAgICAgICB7IGFtb3VudDogMCB9LFxuICAgICAgICAgIC8vIDIwLTI5XG4gICAgICAgICAgeyBhbW91bnQ6IDAgfVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ== |