Test that a negotiationneeded event is fired when not all local media can be included in an answer

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


PASS pc.signalingState is 'stable'
Add local audio and video tracks to pc
pc.addTrack(stream.getAudioTracks()[0], stream)
pc.addTrack(stream.getVideoTracks()[0], stream)
PASS pc.getTransceivers().length is 2
PASS negotiationneededevent fired: There is local media added with addTrack

Register a new handler for the negotiationneededevent
PASS remotePc.getTransceivers().length is 1
Create a remote offer with audio only
Set remote offer as remote description
PASS Remote offer set
PASS pc.getTransceivers().length is 2
Create an answer for the audio only offer
Set answer as local description
PASS Answer set
PASS successfullyParsed is true

TEST COMPLETE

