stringify_object.js 1.1 KB

var fs = require ('fs')
  , join = require('path').join
  , file = join(__dirname, 'fixtures','all_npm.json')
  , JSONStream = require('../')
  , it = require('it-is').style('colour')
  , es = require('event-stream')
  , pending = 10
  , passed = true

  function randomObj () {
    return (
      Math.random () < 0.4
      ? {hello: 'eonuhckmqjk',
          whatever: 236515,
          lies: true,
          nothing: [null],
          stuff: [Math.random(),Math.random(),Math.random()]
        } 
      : ['AOREC', 'reoubaor', {ouec: 62642}, [[[], {}, 53]]]
    )
  }

for (var ix = 0; ix < pending; ix++) (function (count) {
  var expected =  {}
    , stringify = JSONStream.stringifyObject()
    
  es.connect(
    stringify,
    es.writeArray(function (err, lines) {
      it(JSON.parse(lines.join(''))).deepEqual(expected)
      if (--pending === 0) {
        console.error('PASSED')
      }
    })
  )

  while (count --) {
    var key = Math.random().toString(16).slice(2)
    expected[key] = randomObj()
    stringify.write([ key, expected[key] ])
  }

  process.nextTick(function () {
    stringify.end()
  })
})(ix)