77 lines
3.0 KiB
HTML
77 lines
3.0 KiB
HTML
<!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>
|