Tests that an exception is thrown if we try to get a pathSeg for a length out of the bounds of the path itself.

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


PASS path.pathSegList.initialize(); threw exception TypeError: Failed to execute 'initialize' on 'SVGPathSegList': 1 argument required, but only 0 present..
PASS path.getPathSegAtLength(0) is 0
PASS path.insertItemBefore(null, 0) threw exception TypeError: Object #<SVGPathElement> has no method 'insertItemBefore'.
PASS path.replaceItem(null, 0) threw exception TypeError: Object #<SVGPathElement> has no method 'replaceItem'.
PASS path.appendItem(null) threw exception TypeError: Object #<SVGPathElement> has no method 'appendItem'.
List correctly initialised.
PASS path.getPathSegAtLength(0) is 0
PASS path.insertItemBefore(null, 0) threw exception TypeError: Object #<SVGPathElement> has no method 'insertItemBefore'.
PASS path.replaceItem(null, 0) threw exception TypeError: Object #<SVGPathElement> has no method 'replaceItem'.
PASS path.appendItem(null) threw exception TypeError: Object #<SVGPathElement> has no method 'appendItem'.
PASS successfullyParsed is true

TEST COMPLETE

