var test = require('tape'); var fs = require ('fs'); var join = require('path').join; var couch_sample_file = join(__dirname, 'fixtures','couch_sample.json'); var JSONStream = require('../'); var fixture = { obj: { one: 1, two: 2, three: 3 } }; function assertFixtureKeys(stream, t) { var keys = []; var values = []; stream.on('data', function(data) { keys.push(data.key); values.push(data.value); }); stream.on('end', function() { t.deepEqual(keys, ['one', 'two', 'three']); t.deepEqual(values, [1,2,3]); t.end(); }); stream.write(JSON.stringify(fixture)); stream.end(); } test('keys via string', function(t) { var stream = JSONStream.parse('obj.$*'); assertFixtureKeys(stream, t); }); test('keys via array', function(t) { var stream = JSONStream.parse(['obj',{emitKey: true}]); assertFixtureKeys(stream, t); }); test('path via array', function(t) { var stream = JSONStream.parse(['obj',{emitPath: true}]); var paths = []; var values = []; stream.on('data', function(data) { console.log(JSON.stringify(data)); paths.push(data.path); values.push(data.value); }); stream.on('end', function() { t.deepEqual(paths, [['obj', 'one'], ['obj', 'two'], ['obj', 'three']]); t.deepEqual(values, [1,2,3]); t.end(); }); stream.write(JSON.stringify(fixture)); stream.end(); }); test('advanced keys', function(t) { var advanced = fs.readFileSync(couch_sample_file); var stream = JSONStream.parse(['rows', true, 'doc', {emitKey: true}]); var keys = []; var values = []; stream.on('data', function(data) { keys.push(data.key); values.push(data.value); }); stream.on('end', function() { t.deepEqual(keys, [ '_id', '_rev', 'hello', '_id', '_rev', 'hello' ]); t.deepEqual(values, [ "change1_0.6995461115147918", "1-e240bae28c7bb3667f02760f6398d508", 1, "change2_0.6995461115147918", "1-13677d36b98c0c075145bb8975105153", 2 ]); t.end(); }); stream.write(advanced); stream.end(); }); test('parent keys', function(t) { var stream = JSONStream.parse('$*'); var d = null; stream.on('data', function(data) { if(d) t.fail('should only be called once'); d = data; }); stream.on('end', function() { t.deepEqual(d,{ key: 'obj', value: fixture.obj }); t.end(); }); stream.write(JSON.stringify(fixture)); stream.end(); })
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
fixtures | Folder | 0755 |
|
|
bool.js | File | 921 B | 0644 |
|
browser.js | File | 482 B | 0644 |
|
destroy_missing.js | File | 679 B | 0644 |
|
doubledot1.js | File | 685 B | 0644 |
|
doubledot2.js | File | 754 B | 0644 |
|
empty.js | File | 1023 B | 0644 |
|
error_contents.js | File | 865 B | 0644 |
|
fn.js | File | 785 B | 0644 |
|
gen.js | File | 4.14 KB | 0644 |
|
header_footer.js | File | 1.09 KB | 0644 |
|
issues.js | File | 647 B | 0644 |
|
keys.js | File | 2.57 KB | 0644 |
|
map.js | File | 767 B | 0644 |
|
multiple_objects.js | File | 932 B | 0644 |
|
multiple_objects_error.js | File | 694 B | 0644 |
|
null.js | File | 553 B | 0644 |
|
parsejson.js | File | 546 B | 0644 |
|
run.js | File | 443 B | 0644 |
|
stringify.js | File | 949 B | 0644 |
|
stringify_object.js | File | 1.1 KB | 0644 |
|
test.js | File | 748 B | 0644 |
|
test2.js | File | 556 B | 0644 |
|
two-ways.js | File | 920 B | 0644 |
|