2017-03-04 10:46:01 -05:00

66 lines
1.5 KiB
JavaScript

const traverse = require("../lib").default;
const assert = require("assert");
const parse = require("babylon").parse;
describe("path/ancestry", function () {
describe("isAncestor", function () {
const ast = parse("var a = 1; 'a';");
it("returns true if ancestor", function() {
const paths = [];
traverse(ast, {
"Program|NumericLiteral"(path) {
paths.push(path);
},
});
const [ programPath, numberPath ] = paths;
assert(programPath.isAncestor(numberPath));
});
it("returns false if not ancestor", function() {
const paths = [];
traverse(ast, {
"Program|NumericLiteral|StringLiteral"(path) {
paths.push(path);
},
});
const [ , numberPath, stringPath ] = paths;
assert(!stringPath.isAncestor(numberPath));
});
});
describe("isDescendant", function () {
const ast = parse("var a = 1; 'a';");
it("returns true if descendant", function() {
const paths = [];
traverse(ast, {
"Program|NumericLiteral"(path) {
paths.push(path);
},
});
const [ programPath, numberPath ] = paths;
assert(numberPath.isDescendant(programPath));
});
it("returns false if not descendant", function() {
const paths = [];
traverse(ast, {
"Program|NumericLiteral|StringLiteral"(path) {
paths.push(path);
},
});
const [ , numberPath, stringPath ] = paths;
assert(!numberPath.isDescendant(stringPath));
});
});
});