test_device_registrar.js
Go to the documentation of this file.
1 /* vim: set sw=2 :miv */
2 /*
3 //
4 // BEGIN SONGBIRD GPL
5 //
6 // This file is part of the Songbird web player.
7 //
8 // Copyright(c) 2005-2008 POTI, Inc.
9 // http://songbirdnest.com
10 //
11 // This file may be licensed under the terms of of the
12 // GNU General Public License Version 2 (the "GPL").
13 //
14 // Software distributed under the License is distributed
15 // on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
16 // express or implied. See the GPL for the specific language
17 // governing rights and limitations.
18 //
19 // You should have received a copy of the GPL along with this
20 // program. If not, go to http://www.gnu.org/licenses/gpl.html
21 // or write to the Free Software Foundation, Inc.,
22 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 //
24 // END SONGBIRD GPL
25 //
26 */
27 
32 Components.utils.import("resource://app/jsmodules/ArrayConverter.jsm");
33 var gUUIDGenerator = Components.classes["@mozilla.org/uuid-generator;1"]
34  .createInstance(Components.interfaces.nsIUUIDGenerator);
35 
36 
37 function DummyDevice(aParam) {
38  this.wrappedJSObject = this;
39  this.param = aParam;
40  this.id = gUUIDGenerator.generateUUID();
41  this.connected = false;
42  this.connect = function(){
43  this.connected = true;
44  }
45 }
46 
47 function runTest () {
48  var manager = Components.classes["@songbirdnest.com/Songbird/DeviceManager;2"]
49  .getService(Components.interfaces.sbIDeviceManager2);
50 
51  var params = [];
52 
53  // register some dummy devices
54  for (var i = 0; i < 1000; ++i) {
55  var param = Math.random();
56  params.push(param);
57  manager.registerDevice(new DummyDevice(param));
58  }
59 
60  // put in a special device to test getDevice
61  var device = new DummyDevice(0);
62  manager.registerDevice(device);
63 
64  // fill in some more dummy data
65  for (var i = 0; i < 1000; ++i) {
66  param = Math.random();
67  params.push(param);
68  manager.registerDevice(new DummyDevice(param));
69  }
70 
71  // test getDevice
72  var returnedDevice = manager.getDevice(device.id);
73  assertTrue(device === returnedDevice.wrappedJSObject,
74  "failed to get device:" +
75  device.id + " / " + returnedDevice.id);
76  manager.unregisterDevice(device);
77  assertTrue(returnedDevice.wrappedJSObject.connected);
78 
79  // read them out and make sure everything's accounted for
80  var devices = ArrayConverter.JSArray(manager.devices);
81  assertTrue(devices.length == params.length, "expected devices to be registered");
82  for each (device in devices) {
83  var index = params.indexOf(device.wrappedJSObject.param);
84  assertTrue(index >= 0, "Looking for param " + device.wrappedJSObject.param);
85  params.splice(index, 1);
86  manager.unregisterDevice(device);
87  assertTrue(device.wrappedJSObject.connected);
88  }
89  assertTrue(params.length == 0, "params not empty: " + uneval(params));
90  assertTrue(manager.devices.length == 0, "devices not unregistered");
91 }
92 
function DummyDevice(aParam)
function assertTrue(aTest, aMessage)
foldersync connect
Definition: connect.js:15
var gUUIDGenerator
function runTest()
Advanced DataRemote unit tests.
_getSelectedPageStyle s i