forked from dominictarr/scuttlebutt
-
Notifications
You must be signed in to change notification settings - Fork 1
/
sync.js
61 lines (45 loc) · 1.17 KB
/
sync.js
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
require('tape')('sync', function (t) {
//need a stream that ends after it has syncronized two scuttlebutts.
var EE = require('../events')
var assert = require('assert')
var es = require('event-stream')
var mac = require('macgyver')()
process.on('exit', mac.validate)
var a = new EE()
var b = new EE()
var synced = false
var as = a.createStream({end: true, wrapper: 'json', name: 'a'})
var bs = b.createStream({end: true, wrapper: 'json', name: 'b'})
as.on('sync', mac(function () {
console.log('A SYNC!')
synced = true
t.deepEqual(a.history(), b.history())
}).once())
bs.on('sync', mac(function () {
console.log('B SYNC!')
next(function () {
t.deepEqual(a.history(), b.history())
})
}).once())
as.on('end', function () {
console.log('A.END()')
})
bs.on('end', function () {
console.log('B.END()')
})
a.emit('event', 1)
a.emit('event', 2)
a.emit('event', 3)
b.emit('event', 4)
b.emit('event', 5)
b.emit('event', 6)
t.equal(synced, false)
as.pipe(es.log('AB>')).pipe(bs).pipe(es.log('BA>')).pipe(as)
var next = process.nextTick
next(function () {
console.log(a.history())
console.log(b.history())
t.deepEqual(a.history(), b.history())
t.end()
})
})