Verifies that attempting to set invalid elements to a Typed Array throws an exception

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

PASS typedArray.set() threw exception TypeError: Expected at least one argument.
PASS typedArray.set('hello world') threw exception TypeError: First argument should be an object.
PASS typedArray.set(otherArray, 1) threw exception RangeError: Range consisting of offset and length are out of bounds.
PASS typedArray.set() threw exception TypeError: Expected at least one argument.
PASS typedArray.set('hello world') threw exception TypeError: First argument should be an object.
PASS typedArray.set(otherArray, 1) threw exception RangeError: Range consisting of offset and length are out of bounds.
PASS typedArray.set() threw exception TypeError: Expected at least one argument.
PASS typedArray.set('hello world') threw exception TypeError: First argument should be an object.
PASS typedArray.set(otherArray, 1) threw exception RangeError: Range consisting of offset and length are out of bounds.
PASS typedArray.set() threw exception TypeError: Expected at least one argument.
PASS typedArray.set('hello world') threw exception TypeError: First argument should be an object.
PASS typedArray.set(otherArray, 1) threw exception RangeError: Range consisting of offset and length are out of bounds.
PASS typedArray.set() threw exception TypeError: Expected at least one argument.
PASS typedArray.set('hello world') threw exception TypeError: First argument should be an object.
PASS typedArray.set(otherArray, 1) threw exception RangeError: Range consisting of offset and length are out of bounds.
PASS typedArray.set() threw exception TypeError: Expected at least one argument.
PASS typedArray.set('hello world') threw exception TypeError: First argument should be an object.
PASS typedArray.set(otherArray, 1) threw exception RangeError: Range consisting of offset and length are out of bounds.
PASS typedArray.set() threw exception TypeError: Expected at least one argument.
PASS typedArray.set('hello world') threw exception TypeError: First argument should be an object.
PASS typedArray.set(otherArray, 1) threw exception RangeError: Range consisting of offset and length are out of bounds.
PASS successfullyParsed is true

TEST COMPLETE

