
FAIL RTCIceTransport constructor does not throw function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL RTCIceTransport initial properties are set function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL gather() with { iceServers: null } should throw TypeError function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL gather() with { iceServers: undefined } should succeed function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL gather() with one turns server, one turn server, username, credential should succeed function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL gather() with 2 stun servers should succeed function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL gather() throws if closed function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL gather() transitions gatheringState to 'gathering' function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL gather() throws if called twice function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL eventually transition gatheringState to 'complete' promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new RTCIceTransport()')"
FAIL onicecandidate fires with null candidate before gatheringState transitions to 'complete' promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new RTCIceTransport()')"
FAIL gather() returns at least one host candidate promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new RTCIceTransport()')"
FAIL gather() returns no candidates with { gatherPolicy: 'relay'} and no turn servers promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new RTCIceTransport()')"
FAIL start() throws if closed function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL start() throws if usernameFragment or password not set function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL start() does not transition state to 'checking' if no remote candidates added function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL start() with default role sets role attribute to 'controlled' function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL start() sets role attribute to 'controlling' function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL addRemoteCandidate() throws if closed function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL addRemoteCandidate() throws on invalid candidate function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL start() transitions state to 'checking' if one remote candidate had been added function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL addRemoteCandidate() transitions state to 'checking' if start() had been called before function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL start() throws if later called with a different role function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL start() flushes remote candidates and transitions state to 'new' if later called with different remote parameters function is not a constructor (evaluating 'new RTCIceTransport()')
FAIL Two RTCIceTransports connect to each other promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new RTCIceTransport()')"
FAIL Two RTCIceTransports configured with the controlling role resolve the conflict in band and still connect. promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new RTCIceTransport()')"
FAIL Two RTCIceTransports configured with the controlled role resolve the conflict in band and still connect. promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new RTCIceTransport()')"
FAIL Selected candidate pair changes once the RTCIceTransports connect. promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new RTCIceTransport()')"
FAIL getSelectedCandidatePair() returns null once the RTCIceTransport is stopped. promise_test: Unhandled rejection with value: object "TypeError: function is not a constructor (evaluating 'new RTCIceTransport()')"

