Skip to content

Commit

Permalink
Remove all the code associated with type checking
Browse files Browse the repository at this point in the history
  • Loading branch information
cjbarth committed Sep 19, 2023
1 parent 0617cef commit cfead2e
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 181 deletions.
132 changes: 0 additions & 132 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1051,136 +1051,4 @@ describe('xpath', () => {
assert.strictEqual(xpath.select1('local-name(/book/characters)', doc), 'characters');
});
});

describe('Node type tests', () => {
it('should correctly identify a Node of type Element', () => {
var doc = parseXml('<book />');
var element = doc.createElement('characters');

assert.ok(xpath.isNodeLike(element));
assert.ok(xpath.isElement(element));
assert.ok(!xpath.isAttribute(doc));
});

it('should correctly identify a Node of type Attribute', () => {
var doc = parseXml('<book />');
var attribute = doc.createAttribute('name');

assert.ok(xpath.isNodeLike(attribute));
assert.ok(xpath.isAttribute(attribute));
assert.ok(!xpath.isTextNode(attribute));
});

it('should correctly identify a Node of type Text', () => {
var doc = parseXml('<book />');
var text = doc.createTextNode('Harry Potter');

assert.ok(xpath.isNodeLike(text));
assert.ok(xpath.isTextNode(text));
assert.ok(!xpath.isCDATASection(text));
});

it('should correctly identify a Node of type CDATASection', () => {
var doc = parseXml('<book />');
var cdata = doc.createCDATASection('Harry Potter');

assert.ok(xpath.isNodeLike(cdata));
assert.ok(xpath.isCDATASection(cdata));
assert.ok(!xpath.isProcessingInstruction(cdata));
});

it('should correctly identify a Node of type ProcessingInstruction', () => {
var doc = parseXml('<book />');
var pi = doc.createProcessingInstruction('xml-stylesheet', 'href="mycss.css" type="text/css"');

// This test fails due to a bug in @xmldom/[email protected]
// assert.ok(xpath.isNodeLike(pi));
assert.ok(xpath.isProcessingInstruction(pi));
assert.ok(!xpath.isComment(pi));
});

it('should correctly identify a Node of type Comment', () => {
var doc = parseXml('<book />');
var comment = doc.createComment('Harry Potter');

assert.ok(xpath.isNodeLike(comment));
assert.ok(xpath.isComment(comment));
assert.ok(!xpath.isDocumentNode(comment));
});

it('should correctly identify a Node of type Document', () => {
var doc = parseXml('<book />');

assert.ok(xpath.isNodeLike(doc));
assert.ok(xpath.isDocumentNode(doc));
assert.ok(!xpath.isDocumentTypeNode(doc));
});

it('should correctly identify a Node of type DocumentType', () => {
var doc = parseXml('<book />');
var doctype = doc.implementation.createDocumentType('book', null, null);

assert.ok(xpath.isNodeLike(doctype));
assert.ok(xpath.isDocumentTypeNode(doctype));
assert.ok(!xpath.isDocumentFragment(doctype));
});

it('should correctly identify a Node of type DocumentFragment', () => {
var doc = parseXml('<book />');
var fragment = doc.createDocumentFragment();

assert.ok(xpath.isNodeLike(fragment));
assert.ok(xpath.isDocumentFragment(fragment));
assert.ok(!xpath.isElement(fragment));
});

it('should not identify a string as a Node', () => {
assert.ok(!xpath.isNodeLike('Harry Potter'));
});

it('should not identify a number as a Node', () => {
assert.ok(!xpath.isNodeLike(45));
});

it('should not identify a boolean as a Node', () => {
assert.ok(!xpath.isNodeLike(true));
});

it('should not identify null as a Node', () => {
assert.ok(!xpath.isNodeLike(null));
});

it('should not identify undefined as a Node', () => {
assert.ok(!xpath.isNodeLike(undefined));
});

it('should not identify an array as a Node', () => {
assert.ok(!xpath.isNodeLike([]));
});

it('should identify an array of Nodes as such', () => {
var doc = parseXml('<book />');
var fragment = doc.createDocumentFragment();
var nodes = [doc, fragment];

assert.ok(xpath.isArrayOfNodes(nodes));
assert.ok(!xpath.isNodeLike(nodes));
});

it('should not identify an array of non-Nodes as an array of Nodes', () => {
var nodes = ['Harry Potter', 45];

assert.ok(!xpath.isArrayOfNodes(nodes));
assert.ok(!xpath.isNodeLike(nodes));
});

it('should not identify an array of mixed Nodes and non-Nodes as an array of Nodes', () => {
var doc = parseXml('<book />');
var fragment = doc.createDocumentFragment();
var nodes = [doc, fragment, 'Harry Potter'];

assert.ok(!xpath.isArrayOfNodes(nodes));
assert.ok(!xpath.isNodeLike(nodes));
});
});
});
13 changes: 0 additions & 13 deletions xpath.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,3 @@ export function selectWithResolver(expression: string, node: Node, resolver: XPa
* @return a function with the same signature as `xpath.select`
*/
export function useNamespaces(namespaceMap: Record<string, string>): XPathSelect;

// Type guards to narrow down the type of the selected type of a returned Node object
export function isNodeLike(value: SelectedValue): value is Node;
export function isArrayOfNodes(value: SelectedValue): value is Node[];
export function isElement(value: SelectedValue): value is Element;
export function isAttribute(value: SelectedValue): value is Attr;
export function isTextNode(value: SelectedValue): value is Text;
export function isCDATASection(value: SelectedValue): value is CDATASection;
export function isProcessingInstruction(value: SelectedValue): value is ProcessingInstruction;
export function isComment(value: SelectedValue): value is Comment;
export function isDocumentNode(value: SelectedValue): value is Document;
export function isDocumentTypeNode(value: SelectedValue): value is DocumentType;
export function isDocumentFragment(value: SelectedValue): value is DocumentFragment;
36 changes: 0 additions & 36 deletions xpath.js
Original file line number Diff line number Diff line change
Expand Up @@ -4898,41 +4898,5 @@ var xpath = (typeof exports === 'undefined') ? {} : exports;
exports.select1 = function (e, doc) {
return exports.select(e, doc, true);
};

var isNodeLike = function (value) {
return value
&& typeof value.nodeType === "number"
&& Number.isInteger(value.nodeType)
&& value.nodeType >= 1
&& value.nodeType <= 11
&& typeof value.nodeName === "string";
};

var isArrayOfNodes = function (value) {
return Array.isArray(value) && value.every(isNodeLike);
};

var isNodeOfType = function (type) {
return function (value) {
return isNodeLike(value) && value.nodeType === type;
};
};

assign(
exports,
{
isNodeLike: isNodeLike,
isArrayOfNodes: isArrayOfNodes,
isElement: isNodeOfType(NodeTypes.ELEMENT_NODE),
isAttribute: isNodeOfType(NodeTypes.ATTRIBUTE_NODE),
isTextNode: isNodeOfType(NodeTypes.TEXT_NODE),
isCDATASection: isNodeOfType(NodeTypes.CDATA_SECTION_NODE),
isProcessingInstruction: isNodeOfType(NodeTypes.PROCESSING_INSTRUCTION_NODE),
isComment: isNodeOfType(NodeTypes.COMMENT_NODE),
isDocumentNode: isNodeOfType(NodeTypes.DOCUMENT_NODE),
isDocumentTypeNode: isNodeOfType(NodeTypes.DOCUMENT_TYPE_NODE),
isDocumentFragment: isNodeOfType(NodeTypes.DOCUMENT_FRAGMENT_NODE),
}
);
// end non-node wrapper
})(xpath);

0 comments on commit cfead2e

Please sign in to comment.