Check that invalid values of arguments throw TypeError.

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


SVGAnimationElement

beginElementAt(float offset)
PASS animateElm.beginElementAt(0) did not throw exception.
PASS animateElm.beginElementAt(NaN) threw exception TypeError: Failed to execute 'beginElementAt' on 'SVGAnimationElement': The provided float value is non-finite..
PASS animateElm.beginElementAt(Infinity) threw exception TypeError: Failed to execute 'beginElementAt' on 'SVGAnimationElement': The provided float value is non-finite..

endElementAt(float offset)
PASS animateElm.endElementAt(0) did not throw exception.
PASS animateElm.endElementAt(NaN) threw exception TypeError: Failed to execute 'endElementAt' on 'SVGAnimationElement': The provided float value is non-finite..
PASS animateElm.endElementAt(Infinity) threw exception TypeError: Failed to execute 'endElementAt' on 'SVGAnimationElement': The provided float value is non-finite..


SVGFEDropShadowElement

setStdDeviation(float stdDeviationX, float stdDeviationY)
PASS dropShadow.setStdDeviation(0, 0) did not throw exception.
PASS dropShadow.setStdDeviation(NaN, 1) threw exception TypeError: Failed to execute 'setStdDeviation' on 'SVGFEDropShadowElement': The provided float value is non-finite..
PASS dropShadow.setStdDeviation(Infinity, 1) threw exception TypeError: Failed to execute 'setStdDeviation' on 'SVGFEDropShadowElement': The provided float value is non-finite..
PASS dropShadow.setStdDeviation(1, NaN) threw exception TypeError: Failed to execute 'setStdDeviation' on 'SVGFEDropShadowElement': The provided float value is non-finite..
PASS dropShadow.setStdDeviation(1, Infinity) threw exception TypeError: Failed to execute 'setStdDeviation' on 'SVGFEDropShadowElement': The provided float value is non-finite..


SVGFEGaussianBlurElement

setStdDeviation(float stdDeviationX, float stdDeviationY)
PASS gaussian.setStdDeviation(0, 0) did not throw exception.
PASS gaussian.setStdDeviation(NaN, 1) threw exception TypeError: Failed to execute 'setStdDeviation' on 'SVGFEGaussianBlurElement': The provided float value is non-finite..
PASS gaussian.setStdDeviation(Infinity, 1) threw exception TypeError: Failed to execute 'setStdDeviation' on 'SVGFEGaussianBlurElement': The provided float value is non-finite..
PASS gaussian.setStdDeviation(1, NaN) threw exception TypeError: Failed to execute 'setStdDeviation' on 'SVGFEGaussianBlurElement': The provided float value is non-finite..
PASS gaussian.setStdDeviation(1, Infinity) threw exception TypeError: Failed to execute 'setStdDeviation' on 'SVGFEGaussianBlurElement': The provided float value is non-finite..
PASS successfullyParsed is true

TEST COMPLETE

