Tests MediaStream.

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


PASS Got local stream.
PASS localStream.getAudioTracks().length is 1
PASS localStream.getVideoTracks().length is 1
PASS typeof MediaStream === 'function' is true
PASS checkIdAttribute(localStream.id) is true
PASS new MediaStream(document) threw exception TypeError: Type error.
PASS new MediaStream([document]) threw exception TypeError: Type error.
PASS new MediaStream([stream.getAudioTracks()[0], document]) threw exception TypeError: Type error.
PASS new MediaStream([null]) threw exception TypeError: Type error.
PASS new MediaStream([undefined]) threw exception TypeError: Type error.
PASS new MediaStream(null) threw exception TypeError: Type error.
PASS new MediaStream(undefined) threw exception TypeError: Type error.

*** testing "new MediaStream()"
PASS Stream constructed
PASS [object MediaStream] is non-null.
PASS [object MediaStream] is defined.
PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
PASS newStream.getAudioTracks().length is nAudio
PASS newStream.getVideoTracks().length is nVideo
PASS checkIdAttribute(newStream.id) is true

*** testing "new MediaStream([])"
PASS Stream constructed
PASS [object MediaStream] is non-null.
PASS [object MediaStream] is defined.
PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
PASS newStream.getAudioTracks().length is nAudio
PASS newStream.getVideoTracks().length is nVideo
PASS checkIdAttribute(newStream.id) is true

*** testing "new MediaStream(stream)"
PASS Stream constructed
PASS [object MediaStream] is non-null.
PASS [object MediaStream] is defined.
PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
PASS newStream.getAudioTracks().length is nAudio
PASS newStream.getVideoTracks().length is nVideo
PASS checkIdAttribute(newStream.id) is true

*** testing "new MediaStream([stream.getAudioTracks()[0]])"
PASS Stream constructed
PASS [object MediaStream] is non-null.
PASS [object MediaStream] is defined.
PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
PASS newStream.getAudioTracks().length is nAudio
PASS newStream.getVideoTracks().length is nVideo
PASS checkIdAttribute(newStream.id) is true

*** testing "new MediaStream([stream.getVideoTracks()[0]])"
PASS Stream constructed
PASS [object MediaStream] is non-null.
PASS [object MediaStream] is defined.
PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
PASS newStream.getAudioTracks().length is nAudio
PASS newStream.getVideoTracks().length is nVideo
PASS checkIdAttribute(newStream.id) is true

*** testing "new MediaStream([stream.getAudioTracks()[0], stream.getVideoTracks()[0]])"
PASS Stream constructed
PASS [object MediaStream] is non-null.
PASS [object MediaStream] is defined.
PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
PASS newStream.getAudioTracks().length is nAudio
PASS newStream.getVideoTracks().length is nVideo
PASS checkIdAttribute(newStream.id) is true

*** testing "new MediaStream([stream.getVideoTracks()[0], stream.getAudioTracks()[0], stream.getVideoTracks()[0]])"
PASS Stream constructed
PASS [object MediaStream] is non-null.
PASS [object MediaStream] is defined.
PASS newStream.constructor.toString() is "function MediaStream() {\n    [native code]\n}"
PASS newStream.getAudioTracks().length is nAudio
PASS newStream.getVideoTracks().length is nVideo
PASS checkIdAttribute(newStream.id) is true
PASS successfullyParsed is true

TEST COMPLETE

