1 2 3var fs = require ('fs') 4 , join = require('path').join 5 , file = join(__dirname, 'fixtures','header_footer.json') 6 , JSONStream = require('../') 7 , it = require('it-is') 8 9var expected = JSON.parse(fs.readFileSync(file)) 10 , parser = JSONStream.parse(['rows', /\d+/ /*, 'value'*/]) 11 , called = 0 12 , headerCalled = 0 13 , footerCalled = 0 14 , ended = false 15 , parsed = [] 16 17fs.createReadStream(file).pipe(parser) 18 19parser.on('header', function (data) { 20 headerCalled ++ 21 it(data).deepEqual({ 22 total_rows: 129, 23 offset: 0 24 }) 25}) 26 27parser.on('footer', function (data) { 28 footerCalled ++ 29 it(data).deepEqual({ 30 foo: { bar: 'baz' } 31 }) 32}) 33 34parser.on('data', function (data) { 35 called ++ 36 it.has({ 37 id: it.typeof('string'), 38 value: {rev: it.typeof('string')}, 39 key:it.typeof('string') 40 }) 41 it(headerCalled).equal(1) 42 parsed.push(data) 43}) 44 45parser.on('end', function () { 46 ended = true 47}) 48 49process.on('exit', function () { 50 it(called).equal(expected.rows.length) 51 it(headerCalled).equal(1) 52 it(footerCalled).equal(1) 53 it(parsed).deepEqual(expected.rows) 54 console.error('PASSED') 55}) 56