blob: 554802d9a215e1364410b8b1ec759bd0426040d3 [file] [log] [blame]
Tests RTCIceCandidate.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS candidate = new RTCIceCandidate(initializer); did not throw exception.
PASS candidate.candidate is "foo"
PASS candidate.sdpMid is "bar"
PASS candidate.sdpMLineIndex is 6
PASS RTCIceCandidate.prototype.toJSON is defined.
PASS Object.getOwnPropertyDescriptor(RTCIceCandidate.prototype, "toJSON").enumerable is true
PASS Object.getOwnPropertyDescriptor(RTCIceCandidate.prototype, "toJSON").writable is true
PASS Object.getOwnPropertyDescriptor(RTCIceCandidate.prototype, "toJSON").configurable is true
PASS RTCIceCandidate.prototype.toJSON.length is 0
PASS RTCIceCandidate.prototype.toJSON.name is "toJSON"
PASS Object.getOwnPropertyDescriptor(jsonMap, "candidate").enumerable is true
PASS Object.getOwnPropertyDescriptor(jsonMap, "candidate").writable is true
PASS Object.getOwnPropertyDescriptor(jsonMap, "candidate").configurable is true
PASS childCandidate.toJSON(); threw exception TypeError: Can only call RTCIceCandidate.toJSON on instances of RTCIceCandidate.
PASS JSON.stringify(candidate.toJSON()) is "{\"candidate\":\"foo\",\"sdpMLineIndex\":6,\"sdpMid\":\"bar\",\"usernameFragment\":null}"
PASS JSON.stringify(candidate.toJSON()) is "{\"candidate\":\"foo\",\"sdpMLineIndex\":6,\"sdpMid\":\"bar\",\"usernameFragment\":null}"
PASS JSON.stringify(candidate.toJSON()) is "{\"candidate\":\"foo\",\"sdpMLineIndex\":6,\"sdpMid\":\"bar\",\"usernameFragment\":null}"
PASS JSON.stringify(candidate.toJSON()) is "{\"candidate\":\"foo\",\"sdpMLineIndex\":6,\"sdpMid\":\"bar\",\"usernameFragment\":null}"
PASS JSON.stringify(candidate.toJSON()) is "{\"candidate\":\"foo\",\"sdpMLineIndex\":6,\"sdpMid\":\"bar\",\"usernameFragment\":null}"
Attributes are readonly
candidate.candidate = "foo-updated"
PASS candidate.candidate is "foo"
candidate.sdpMid = "bar-updated"
PASS candidate.sdpMid is "bar"
candidate.sdpMLineIndex = 7
PASS candidate.sdpMLineIndex is 6
Dictionary argument is mandatory.
PASS new RTCIceCandidate(); threw exception TypeError: Not enough arguments.
One of the 'sdpMid' or 'sdpMLineIndex' members must be present (and not null or undefined).
PASS new RTCIceCandidate({candidate:"foo"}); threw exception TypeError: Candidate must not have both null sdpMid and sdpMLineIndex.
PASS new RTCIceCandidate({candidate:"foo", sdpMid: null}); threw exception TypeError: Candidate must not have both null sdpMid and sdpMLineIndex.
PASS new RTCIceCandidate({candidate:"foo", sdpMid: undefined}); threw exception TypeError: Candidate must not have both null sdpMid and sdpMLineIndex.
PASS new RTCIceCandidate({candidate:"foo", sdpMLineIndex: null}); threw exception TypeError: Candidate must not have both null sdpMid and sdpMLineIndex.
PASS new RTCIceCandidate({candidate:"foo", sdpMLineIndex: undefined}); threw exception TypeError: Candidate must not have both null sdpMid and sdpMLineIndex.
PASS new RTCIceCandidate({candidate:"foo", sdpMid: null, sdpMLineIndex: null}); threw exception TypeError: Candidate must not have both null sdpMid and sdpMLineIndex.
PASS new RTCIceCandidate({candidate:"foo", sdpMid: undefined, sdpMLineIndex: undefined}); threw exception TypeError: Candidate must not have both null sdpMid and sdpMLineIndex.
Test that sdpMid or sdpMLineIndex explicitly set to null or undefined, results in a null value.
PASS candidate = new RTCIceCandidate({candidate:"foo", sdpMid: null, sdpMLineIndex: 1}); did not throw exception.
PASS candidate.sdpMid is null
PASS candidate.sdpMLineIndex is 1
PASS candidate = new RTCIceCandidate({candidate:"foo", sdpMid: undefined, sdpMLineIndex: 1}); did not throw exception.
PASS candidate.sdpMid is null
PASS candidate.sdpMLineIndex is 1
PASS candidate = new RTCIceCandidate({candidate:"foo", sdpMid: "foo", sdpMLineIndex: null}); did not throw exception.
PASS candidate.sdpMid is 'foo'
PASS candidate.sdpMLineIndex is null
PASS candidate = new RTCIceCandidate({candidate:"foo", sdpMid: "foo", sdpMLineIndex: undefined}); did not throw exception.
PASS candidate.sdpMid is 'foo'
PASS candidate.sdpMLineIndex is null
When one of the 'sdpMid' or 'sdpMLineIndex' members is set, the other must be null.
PASS candidate = new RTCIceCandidate({candidate:"foo", sdpMid:"bar"}); did not throw exception.
PASS candidate.sdpMid is "bar"
PASS candidate.sdpMLineIndex is null
PASS candidate = new RTCIceCandidate({candidate:"foo", sdpMLineIndex:6}); did not throw exception.
PASS candidate.sdpMid is null
PASS candidate.sdpMLineIndex is 6
Conversion of sdpMLineIndex to unsigned short, following WebIDL rules without [Clamp] or [EnforceRange]
PASS (new RTCIceCandidate({candidate:"foo", sdpMLineIndex:"a"})).sdpMLineIndex is 0
PASS (new RTCIceCandidate({candidate:"foo", sdpMLineIndex:-1})).sdpMLineIndex is 65535
PASS (new RTCIceCandidate({candidate:"foo", sdpMLineIndex:65536})).sdpMLineIndex is 0
PASS (new RTCIceCandidate({candidate:"foo", sdpMLineIndex:65537})).sdpMLineIndex is 1
Some bad input
PASS new RTCIceCandidate(5); threw exception TypeError: Type error.
PASS new RTCIceCandidate("foobar"); threw exception TypeError: Type error.
PASS new RTCIceCandidate(candidate:""); threw exception SyntaxError: Unexpected token ':'. Expected ')' to end an argument list..
PASS successfullyParsed is true
TEST COMPLETE