Test RTCPeerConnection.setRemoteDescription called with an RTCSessionDescription of type 'offer'

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


*** Create (remote) offer with audio (remoteOffer1)
*** Done, start testing with remoteOffer1
PASS pc.signalingState is 'stable'
PASS pc.remoteDescription is null
PASS pc.pendingRemoteDescription is null
PASS pc.currentRemoteDescription is null

PASS remoteOffer1 set as remote description
FAIL pc.signalingState should be have-remote-offer. Was stable.
FAIL pc.remoteDescription should be [object Object]. Was null.
FAIL pc.pendingRemoteDescription should be [object Object]. Was null.
PASS pc.currentRemoteDescription is null

PASS remoteOffer1 set as remote description (again)
FAIL pc.signalingState should be have-remote-offer. Was stable.

*** Try setting local descriptions with bad types for the current state
PASS promise pc.setRemoteDescription({type:'answer', sdp:remoteOffer1.sdp}); rejected with InvalidStateError: Description type incompatible with current signaling state
PASS promise pc.setRemoteDescription({type:'pranswer', sdp:remoteOffer1.sdp}); rejected with InvalidStateError: Description type incompatible with current signaling state

*** Create (remote) offer with video (remoteOffer2)
*** Done, start testing with remoteOffer2
FAIL pc.signalingState should be have-remote-offer. Was stable.

PASS remoteOffer2 set as remote description
FAIL pc.signalingState should be have-remote-offer. Was stable.
FAIL pc.remoteDescription should be [object Object]. Was null.
FAIL pc.pendingRemoteDescription should be [object Object]. Was null.
PASS pc.currentRemoteDescription is null

PASS successfullyParsed is true

TEST COMPLETE

