1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5var test = require('test').binding;
6var unittestBindings = require('test_environment_specific_bindings');
7
8unittestBindings.exportTests([
9  function testEnvironment() {
10    test.assertTrue(!!$Array);
11    test.assertTrue(!!$Function);
12    test.assertTrue(!!$JSON);
13    test.assertTrue(!!$Object);
14    test.assertTrue(!!$RegExp);
15    test.assertTrue(!!$String);
16    test.assertTrue(!!privates);
17    test.assertTrue(!!define);
18    test.assertTrue(!!require);
19    test.assertTrue(!!requireNative);
20    test.assertTrue(!!requireAsync);
21    test.assertEq(undefined, chrome.runtime.lastError);
22    test.assertEq(undefined, chrome.extension.lastError);
23    test.succeed();
24  },
25  function testPromisesRun() {
26    Promise.resolve().then(test.callbackPass());
27  },
28  function testCommonModulesAreAvailable() {
29    var binding = require('binding');
30    var sendRequest = require('sendRequest');
31    var lastError = require('lastError');
32    test.assertTrue(!!binding);
33    test.assertTrue(!!sendRequest);
34    test.assertTrue(!!lastError);
35    test.succeed();
36  },
37  function testMojoModulesAreAvailable() {
38    Promise.all([
39      requireAsync('mojo/public/js/bindings/connection'),
40      requireAsync('mojo/public/js/bindings/core'),
41      requireAsync('content/public/renderer/service_provider'),
42    ]).then(test.callback(function(modules) {
43      var connection = modules[0];
44      var core = modules[1];
45      var serviceProvider = modules[2];
46      test.assertTrue(!!connection.Connection);
47      test.assertTrue(!!core.createMessagePipe);
48      test.assertTrue(!!serviceProvider.connectToService);
49    }));
50  },
51  function testTestBindings() {
52    var counter = 0;
53    function increment() {
54      counter++;
55    }
56    test.runWithUserGesture(increment);
57    test.runWithoutUserGesture(increment);
58    test.runWithModuleSystem(increment);
59    test.assertEq(3, counter);
60    test.assertFalse(test.isProcessingUserGesture());
61    test.assertTrue(!!test.getApiFeatures());
62    test.assertEq(0, test.getApiDefinitions().length);
63    test.succeed();
64  }
65], test.runTests, exports);
66