test_udpsocket.js (3005B)
1 /* -*- Mode: Javascript; indent-tabs-mode: nil; js-indent-level: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 "use strict"; 6 7 const HELLO_WORLD = "Hello World"; 8 const EMPTY_MESSAGE = ""; 9 10 add_test(function test_udp_message_raw_data() { 11 info("test for nsIUDPMessage.rawData"); 12 13 let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( 14 Ci.nsIUDPSocket 15 ); 16 17 socket.init(-1, true, Services.scriptSecurityManager.getSystemPrincipal()); 18 info("Port assigned : " + socket.port); 19 socket.asyncListen({ 20 QueryInterface: ChromeUtils.generateQI(["nsIUDPSocketListener"]), 21 onPacketReceived(aSocket, aMessage) { 22 let recv_data = String.fromCharCode.apply(null, aMessage.rawData); 23 Assert.equal(recv_data, HELLO_WORLD); 24 Assert.equal(recv_data, aMessage.data); 25 socket.close(); 26 run_next_test(); 27 }, 28 onStopListening() {}, 29 }); 30 31 let rawData = new Uint8Array(HELLO_WORLD.length); 32 for (let i = 0; i < HELLO_WORLD.length; i++) { 33 rawData[i] = HELLO_WORLD.charCodeAt(i); 34 } 35 let written = socket.send("127.0.0.1", socket.port, rawData); 36 Assert.equal(written, HELLO_WORLD.length); 37 }); 38 39 add_test(function test_udp_send_stream() { 40 info("test for nsIUDPSocket.sendBinaryStream"); 41 42 let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( 43 Ci.nsIUDPSocket 44 ); 45 46 socket.init(-1, true, Services.scriptSecurityManager.getSystemPrincipal()); 47 socket.asyncListen({ 48 QueryInterface: ChromeUtils.generateQI(["nsIUDPSocketListener"]), 49 onPacketReceived(aSocket, aMessage) { 50 let recv_data = String.fromCharCode.apply(null, aMessage.rawData); 51 Assert.equal(recv_data, HELLO_WORLD); 52 socket.close(); 53 run_next_test(); 54 }, 55 onStopListening() {}, 56 }); 57 58 let stream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance( 59 Ci.nsIStringInputStream 60 ); 61 stream.setByteStringData(HELLO_WORLD); 62 socket.sendBinaryStream("127.0.0.1", socket.port, stream); 63 }); 64 65 add_test(function test_udp_message_zero_length() { 66 info("test for nsIUDPMessage with zero length"); 67 68 let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( 69 Ci.nsIUDPSocket 70 ); 71 72 socket.init(-1, true, Services.scriptSecurityManager.getSystemPrincipal()); 73 info("Port assigned : " + socket.port); 74 socket.asyncListen({ 75 QueryInterface: ChromeUtils.generateQI(["nsIUDPSocketListener"]), 76 onPacketReceived(aSocket, aMessage) { 77 let recv_data = String.fromCharCode.apply(null, aMessage.rawData); 78 Assert.equal(recv_data, EMPTY_MESSAGE); 79 Assert.equal(recv_data, aMessage.data); 80 socket.close(); 81 run_next_test(); 82 }, 83 onStopListening() {}, 84 }); 85 86 let rawData = new Uint8Array(EMPTY_MESSAGE.length); 87 let written = socket.send("127.0.0.1", socket.port, rawData); 88 Assert.equal(written, EMPTY_MESSAGE.length); 89 });