/* 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/. */

///////////////////////////////////////////////////////////////////////////////
// Test Purpose:
//   To verify the basic functionality of BluetoothManager.
//
// Test Coverage:
//   - BluetoothManager.defaultAdapter
//   - BluetoothManager.getAdapters()
// TODO:
//   - BluetoothManager.onattributechanged()
//   - BluetoothManager.onadapteradded()
//   - BluetoothManager.onadapterremoved()
//
///////////////////////////////////////////////////////////////////////////////

MARIONETTE_TIMEOUT = 60000;
MARIONETTE_HEAD_JS = 'head.js';

// TODO: Listens to 'onattributechanged' when B2G supports the feature that
//       allows user to add/remove Bluetooth adapter.
// Currently, B2G recognizes build-in Bluetooth chip as default adapter and
// don't support adding additional Bluetooth dongles in gonk layer.
// Therefore, the 'onattributechanged' would be triggered *only* when the
// instance of BluetoothManager is created.
function waitForManagerAttributeChanged() {
  let deferred = Promise.defer();

  bluetoothManager.onattributechanged = function(aEvent) {
    if(aEvent.attrs.indexOf("defaultAdapter")) {
      bluetoothManager.onattributechanged = null;
      ok(true, "BluetoothManager event 'onattributechanged' got.");
      deferred.resolve(aEvent);
    }
  };

  return deferred.promise;
}

startBluetoothTestBase(["settings-read", "settings-write", "settings-api-read", "settings-api-write"],
                       function testCaseMain() {
  let adapters = bluetoothManager.getAdapters();
  ok(Array.isArray(adapters), "Can not got the array of adapters");
  ok(adapters.length, "The number of adapters should not be zero");
  ok(bluetoothManager.defaultAdapter, "defaultAdapter should not be null.");
});
