blob: 06358b6a512b112fb84a0abb007f1829fe0f547d [file] [log] [blame]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Testing basic data channel creation</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
</head>
<body>
<script>
var longString = "abcdefgh";
for (var cptr = 0; cptr < 16; ++cptr)
longString += longString;
test(() => {
var pc = new RTCPeerConnection();
assert_throws(new TypeError, () => { pc.createDataChannel(longString); });
}, "Creating data channel with very long label");
test(() => {
var pc = new RTCPeerConnection();
pc.close();
assert_throws("InvalidStateError", () => { pc.createDataChannel('sendDataChannel'); });
}, "Creating data channel after closing the connection");
function testWrongDataChannelInit(init, title)
{
return test(() => {
var pc = new RTCPeerConnection();
assert_throws(new TypeError, () => { pc.createDataChannel('sendDataChannel', init); });
}, "Wrong data channel init: " + title);
}
function testRightDataChannelInit(init, title)
{
return test(() => {
var pc = new RTCPeerConnection();
channel = pc.createDataChannel('sendDataChannel', init);
if (!init)
init = { };
if (init.ordered === undefined)
init.ordered = true;
if (init.maxPacketLifeTime === undefined)
init.maxPacketLifeTime = null;
if (init.maxRetransmits === undefined)
init.maxRetransmits = null;
if (init.protocol === undefined)
init.protocol = "";
if (init.negotiated === undefined)
init.negotiated = false;
if (init.id === undefined)
init.id = null;
assert_equals(channel.ordered, init.ordered, "ordered");
assert_equals(channel.maxPacketLifeTime, init.maxPacketLifeTime, "maxPacketLifeTime");
assert_equals(channel.maxRetransmitTime, init.maxRetransmitTime, "maxRetransmitTime");
assert_equals(channel.maxRetransmits, init.maxRetransmits, "maxRetransmits");
assert_equals(channel.protocol, init.protocol, "protocol");
assert_equals(channel.negotiated, init.negotiated, "negotiated");
assert_equals(channel.id, init.id, "id");
}, "Right data channel init: " + title);
}
testWrongDataChannelInit({negotiated: false, protocol: longString}, "long protocol");
testWrongDataChannelInit({id: 65535}, "long id");
testWrongDataChannelInit({maxPacketLifeTime: 1, maxRetransmits: 1}, "maxPacketLifeTime and maxRetransmits");
testRightDataChannelInit({ordered: true, maxRetransmit: 11, protocol: "whatever", negotiated: false, id: 1 }, "ordered init");
testRightDataChannelInit({ordered: false, maxPacketLifeTime: 10, protocol: "whatever", negotiated: false, id: 2 }, "unordered init");
testRightDataChannelInit({protocol: "whatever", negotiated: false, id: 123 }, "default ordered init with id");
testRightDataChannelInit(undefined, "no init");
testRightDataChannelInit(null, "null");
</script>
</body>
</html>