test.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. var test = require('tape')
  2. var ndj = require('./')
  3. var os = require('os')
  4. var concat = require('concat-stream')
  5. test('.parse', function(t) {
  6. var parser = ndj.parse()
  7. parser.on('data', function(obj) {
  8. t.equal(obj.hello, 'world')
  9. t.end()
  10. })
  11. parser.write('{"hello": "world"}\n')
  12. })
  13. test('.parse twice', function(t) {
  14. var parser = ndj.parse()
  15. parser.once('data', function(obj) {
  16. t.equal(obj.hello, 'world')
  17. parser.once('data', function(obj) {
  18. t.equal(obj.hola, 'mundo')
  19. t.end()
  20. })
  21. })
  22. parser.write('{"hello": "world"}\n{"hola": "mundo"}\n')
  23. })
  24. test('.parse - strict:true error', function (t) {
  25. var parser = ndj.parse({strict: true})
  26. try {
  27. parser.write('{"no":"json"\n')
  28. } catch(e) {
  29. t.pass('error thrown')
  30. t.end()
  31. }
  32. })
  33. test('.parse - strict:true error event', function (t) {
  34. var parser = ndj.parse({strict: true})
  35. parser.on('error', function (err) {
  36. t.pass('error event called')
  37. t.end()
  38. })
  39. try {
  40. parser.write('{"no":"json"\n')
  41. } catch(e) {
  42. t.fail('should not throw')
  43. }
  44. })
  45. test('.parse - strict:false error', function (t) {
  46. var parser = ndj.parse({strict: false})
  47. parser.once('data', function (data) {
  48. t.ok(data.json, 'parse second one')
  49. t.end()
  50. })
  51. try {
  52. parser.write('{"json":false\n{"json":true}\n')
  53. } catch(e) {
  54. t.fail('should not call an error')
  55. }
  56. })
  57. test('.serialize', function(t) {
  58. var serializer = ndj.serialize()
  59. serializer.pipe(concat(function(data) {
  60. t.equal(data, '{"hello":"world"}' + os.EOL)
  61. t.end()
  62. }))
  63. serializer.write({hello: 'world'})
  64. serializer.end()
  65. })
  66. test('.serialize circular', function(t) {
  67. var serializer = ndj.serialize()
  68. serializer.pipe(concat(function(data) {
  69. t.equal(data, '{"obj":"[Circular ~]"}' + os.EOL)
  70. t.end()
  71. }))
  72. var obj = {}
  73. obj.obj = obj
  74. serializer.write(obj)
  75. serializer.end()
  76. })