diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:44:51 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:44:51 +0000 |
commit | 9e3c08db40b8916968b9f30096c7be3f00ce9647 (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /netwerk/test/unit/test_udpsocket.js | |
parent | Initial commit. (diff) | |
download | thunderbird-9e3c08db40b8916968b9f30096c7be3f00ce9647.tar.xz thunderbird-9e3c08db40b8916968b9f30096c7be3f00ce9647.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'netwerk/test/unit/test_udpsocket.js')
-rw-r--r-- | netwerk/test/unit/test_udpsocket.js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/netwerk/test/unit/test_udpsocket.js b/netwerk/test/unit/test_udpsocket.js new file mode 100644 index 0000000000..340fe6aa13 --- /dev/null +++ b/netwerk/test/unit/test_udpsocket.js @@ -0,0 +1,89 @@ +/* -*- Mode: Javascript; indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +"use strict"; + +const HELLO_WORLD = "Hello World"; +const EMPTY_MESSAGE = ""; + +add_test(function test_udp_message_raw_data() { + info("test for nsIUDPMessage.rawData"); + + let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( + Ci.nsIUDPSocket + ); + + socket.init(-1, true, Services.scriptSecurityManager.getSystemPrincipal()); + info("Port assigned : " + socket.port); + socket.asyncListen({ + QueryInterface: ChromeUtils.generateQI(["nsIUDPSocketListener"]), + onPacketReceived(aSocket, aMessage) { + let recv_data = String.fromCharCode.apply(null, aMessage.rawData); + Assert.equal(recv_data, HELLO_WORLD); + Assert.equal(recv_data, aMessage.data); + socket.close(); + run_next_test(); + }, + onStopListening(aSocket, aStatus) {}, + }); + + let rawData = new Uint8Array(HELLO_WORLD.length); + for (let i = 0; i < HELLO_WORLD.length; i++) { + rawData[i] = HELLO_WORLD.charCodeAt(i); + } + let written = socket.send("127.0.0.1", socket.port, rawData); + Assert.equal(written, HELLO_WORLD.length); +}); + +add_test(function test_udp_send_stream() { + info("test for nsIUDPSocket.sendBinaryStream"); + + let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( + Ci.nsIUDPSocket + ); + + socket.init(-1, true, Services.scriptSecurityManager.getSystemPrincipal()); + socket.asyncListen({ + QueryInterface: ChromeUtils.generateQI(["nsIUDPSocketListener"]), + onPacketReceived(aSocket, aMessage) { + let recv_data = String.fromCharCode.apply(null, aMessage.rawData); + Assert.equal(recv_data, HELLO_WORLD); + socket.close(); + run_next_test(); + }, + onStopListening(aSocket, aStatus) {}, + }); + + let stream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance( + Ci.nsIStringInputStream + ); + stream.setData(HELLO_WORLD, HELLO_WORLD.length); + socket.sendBinaryStream("127.0.0.1", socket.port, stream); +}); + +add_test(function test_udp_message_zero_length() { + info("test for nsIUDPMessage with zero length"); + + let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( + Ci.nsIUDPSocket + ); + + socket.init(-1, true, Services.scriptSecurityManager.getSystemPrincipal()); + info("Port assigned : " + socket.port); + socket.asyncListen({ + QueryInterface: ChromeUtils.generateQI(["nsIUDPSocketListener"]), + onPacketReceived(aSocket, aMessage) { + let recv_data = String.fromCharCode.apply(null, aMessage.rawData); + Assert.equal(recv_data, EMPTY_MESSAGE); + Assert.equal(recv_data, aMessage.data); + socket.close(); + run_next_test(); + }, + onStopListening(aSocket, aStatus) {}, + }); + + let rawData = new Uint8Array(EMPTY_MESSAGE.length); + let written = socket.send("127.0.0.1", socket.port, rawData); + Assert.equal(written, EMPTY_MESSAGE.length); +}); |