blob: 5a31a35374095379e500d0069672f017efd3ab78 [file] [log] [blame]
'use strict'
var assert = require('assert')
var test = require('tape')
var remark = require('remark')
var findAllAfter = require('.')
var tree = remark().parse('Some *emphasis*, **importance**, and `code`.')
var paragraph = tree.children[0]
var children = paragraph.children
test('unist-util-find-all-after', function(t) {
t.throws(
function() {
findAllAfter()
},
/Expected parent node/,
'should fail without parent'
)
t.throws(
function() {
findAllAfter({type: 'foo'})
},
/Expected parent node/,
'should fail without parent node'
)
t.doesNotThrow(function() {
assert.throws(function() {
findAllAfter({type: 'foo', children: []})
}, /Expected positive finite index or child node/)
assert.throws(function() {
findAllAfter({type: 'foo', children: []}, -1)
}, /Expected positive finite index or child node/)
assert.throws(function() {
findAllAfter({type: 'foo', children: []}, {type: 'bar'})
}, /Expected positive finite index or child node/)
}, 'should fail without index')
t.doesNotThrow(function() {
assert.throws(function() {
findAllAfter(
{
type: 'foo',
children: [{type: 'bar'}, {type: 'baz'}]
},
0,
false
)
}, /Expected function, string, or object as test/)
assert.throws(function() {
findAllAfter(
{
type: 'foo',
children: [{type: 'bar'}, {type: 'baz'}]
},
0,
true
)
}, /Expected function, string, or object as test/)
}, 'should fail for invalid `test`')
t.doesNotThrow(function() {
var res = children.slice(2)
assert.deepStrictEqual(findAllAfter(paragraph, children[1]), res)
assert.deepStrictEqual(findAllAfter(paragraph, 1), res)
assert.deepStrictEqual(findAllAfter(paragraph, 7), [])
}, 'should return the following node when without `test`')
t.doesNotThrow(function() {
assert.deepStrictEqual(findAllAfter(paragraph, 0, children[6]), [
children[6]
])
assert.deepStrictEqual(findAllAfter(paragraph, children[0], children[1]), [
children[1]
])
assert.deepStrictEqual(findAllAfter(paragraph, 0, children[1]), [
children[1]
])
assert.deepStrictEqual(
findAllAfter(paragraph, children[0], children[0]),
[]
)
assert.deepStrictEqual(findAllAfter(paragraph, 0, children[0]), [])
assert.deepStrictEqual(findAllAfter(paragraph, 1, children[1]), [])
}, 'should return `node` when given a `node` and existing')
t.doesNotThrow(function() {
assert.deepStrictEqual(findAllAfter(paragraph, 0, 'strong'), [children[3]])
assert.deepStrictEqual(findAllAfter(paragraph, 3, 'strong'), [])
assert.deepStrictEqual(findAllAfter(paragraph, children[0], 'strong'), [
children[3]
])
assert.deepStrictEqual(findAllAfter(paragraph, children[3], 'strong'), [])
}, 'should return a child when given a `type` and existing')
t.doesNotThrow(function() {
var res = children.slice(5)
assert.deepStrictEqual(findAllAfter(paragraph, 0, test), res)
assert.deepStrictEqual(findAllAfter(paragraph, 6, test), [])
assert.deepStrictEqual(findAllAfter(paragraph, children[4], test), res)
assert.deepStrictEqual(findAllAfter(paragraph, children[6], test), [])
function test(node, n) {
return n >= 5
}
}, 'should return a child when given a `test` and existing')
t.end()
})