blob: 8343eb828c6b80e631590203f24750199c6de8b7 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("Tests RTCSessionDescription.");
var initializer = {type:"offer", sdp:"foobar"};
var sessionDescription;
shouldNotThrow("sessionDescription = new RTCSessionDescription(initializer);");
shouldBe('sessionDescription.type', '"offer"');
shouldBe('sessionDescription.sdp', '"foobar"');
shouldBeEqualToString('JSON.stringify(sessionDescription.toJSON())', '{"type":"offer","sdp":"foobar"}');
debug("*** Attributes are read-only.");
shouldNotThrow("sessionDescription.type = 'answer'");
shouldBe("sessionDescription.type", "'offer'");
shouldNotThrow("sessionDescription.sdp = 'football'");
shouldBe("sessionDescription.sdp", "'foobar'");
debug("*** Argument is mandatory");
shouldThrow("new RTCSessionDescription();");
debug("*** Dictionary member type is required");
shouldThrow("new RTCSessionDescription({});");
shouldThrow("new RTCSessionDescription({sdp:'x'});");
shouldThrow("new RTCSessionDescription({foo:'bar'});");
shouldNotThrow("new RTCSessionDescription({type:'offer'});");
shouldThrow("new RTCSessionDescription(null);");
shouldThrow("new RTCSessionDescription(5);");
shouldThrow("new RTCSessionDescription('foobar');");
shouldThrow("new RTCSessionDescription({type:'foobar', sdp:'x'});");
debug("*** Valid types");
["offer", "answer", "pranswer", "rollback"].forEach(type => {
shouldNotThrow(`sessionDescription = new RTCSessionDescription({type:'${type}', sdp:'x'});`);
shouldBe("sessionDescription.type", `'${type}'`);
});
window.successfullyParsed = true;
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>