This test makes sure the closest() API works correctly

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".

PASS theTarget.closest("#theTarget") is theTarget
PASS theTarget.closest("ancestor") is ancestor
PASS theTarget.closest("tribe ancestor") is ancestor
PASS theTarget.closest("tribe > ancestor") is ancestor
PASS theTarget.closest("realm + ancestor") is ancestor
PASS theTarget.closest("realm ~ ancestor") is ancestor
PASS theTarget.closest("tribe, ancestor") is ancestor
PASS theTarget.closest("ancestor, tribe") is ancestor
PASS theTarget.closest("tribe realm") is null
PASS theTarget.closest("tribe realm throne") is null
PASS theTarget.closest("tribe realm ancestor") is null
PASS theTarget.closest("realm > ancestor") is null
PASS theTarget.closest("throne + ancestor") is null
PASS theTarget.closest("throne ~ ancestor") is null
PASS theTarget.closest(".classic") is ancestor
PASS theTarget.closest("#john") is ancestor
PASS theTarget.closest("doe") is null
PASS theTarget.closest("ancestor[name=old]") is ancestor
PASS theTarget.closest("ancestor[name=young]") is null
PASS theTarget.closest(null) is null
PASS theTarget.closest(undefined) is null
PASS sour.closest("lemon") is sour
PASS sour.closest("a, b, c, d, e") is e
PASS sour.closest("a, b, c") is c
PASS sour.closest("a, b") is b
PASS sour.closest("e, d, c, b, a") is e
PASS sour.closest("d, c, b, a") is d
PASS sour.closest("c, b, a") is c
PASS sour.closest("b, a") is b
PASS sour.closest("a") is a
PASS document.closest is undefined
PASS document.closest() threw exception TypeError: document.closest is not a function.
PASS theTarget.closest() threw exception TypeError: Failed to execute 'closest' on 'Element': 1 argument required, but only 0 present..
PASS theTarget.closest("") threw exception SyntaxError: Failed to execute 'closest' on 'Element': The provided selector is empty..
PASS theTarget.closest(".123") threw exception SyntaxError: Failed to execute 'closest' on 'Element': '.123' is not a valid selector..
PASS theTarget.closest("    ") threw exception SyntaxError: Failed to execute 'closest' on 'Element': '    ' is not a valid selector..
PASS theTarget.closest(")") threw exception SyntaxError: Failed to execute 'closest' on 'Element': ')' is not a valid selector..
PASS theTarget.closest("(") threw exception SyntaxError: Failed to execute 'closest' on 'Element': '(' is not a valid selector..
PASS theTarget.closest("()") threw exception SyntaxError: Failed to execute 'closest' on 'Element': '()' is not a valid selector..
PASS theTarget.closest("^_^") threw exception SyntaxError: Failed to execute 'closest' on 'Element': '^_^' is not a valid selector..
PASS theTarget.closest("{") threw exception SyntaxError: Failed to execute 'closest' on 'Element': '{' is not a valid selector..
PASS theTarget.closest("}") threw exception SyntaxError: Failed to execute 'closest' on 'Element': '}' is not a valid selector..
PASS theTarget.closest("{}") threw exception SyntaxError: Failed to execute 'closest' on 'Element': '{}' is not a valid selector..
PASS successfullyParsed is true

TEST COMPLETE

