forked from socketstream/socketstream
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathunique_set.coffee
56 lines (48 loc) · 1.78 KB
/
unique_set.coffee
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
UniqueSet = require('../lib/utils/unique_set').UniqueSet
describe 'Unqiue Set', ->
it 'should add elements', ->
set = new UniqueSet
set.add('tom', 12345)
set.add('tom', 12345)
set.members('tom').toString().should.equal('12345')
set.add('tom', null) # should NOT be added
set.members('tom').toString().should.equal('12345')
it 'should remove an element', ->
set = new UniqueSet
set.add('tom', 1111)
set.add('tom', 1112)
set.add('john', 2222)
# Should remove correctly
set.members('tom').join(',').should.equal('1111,1112')
set.remove('tom', 1111)
set.members('tom').join(',').should.equal('1112')
set.remove('tom', 1112)
# Should give an empty array back if no elements left
(typeof(set.members('tom'))).should.equal('object')
(set.members('tom').length).should.equal(0)
it 'should list keys in a set', ->
set = new UniqueSet
set.add('tom', 1111)
set.add('tom', 1112)
set.add('john', 1113)
set.add('paul', 1114)
set.add(null, 1115) # should NOT be added
set.keys().join(',').should.equal('tom,john,paul')
it 'should remove a value across all keys', ->
set = new UniqueSet
set.add('channel1', 1111)
set.add('channel1', 1112)
set.add('channel2', 1112)
set.add('channel3', 1111)
set.add('channel4', 1114)
set.add('channel5', 1111)
# Confirm existance of 1111
set.members('channel1').join(',').should.equal('1111,1112')
set.members('channel3').join(',').should.equal('1111')
set.members('channel5').join(',').should.equal('1111')
# Remove 1111
set.removeFromAll(1111)
# Confirm removal
set.members('channel1').join(',').should.equal('1112')
set.members('channel3').join(',').should.equal('')
set.members('channel5').join(',').should.equal('')