addon-sdk/source/test/test-modules.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/addon-sdk/source/test/test-modules.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,150 @@
     1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.7 +
     1.8 +exports.testDefine = function(assert) {
     1.9 +  let tiger = require('./modules/tiger');
    1.10 +  assert.equal(tiger.name, 'tiger', 'name proprety was exported properly');
    1.11 +  assert.equal(tiger.type, 'cat', 'property form other module exported');
    1.12 +};
    1.13 +
    1.14 +exports.testDefineInoresNonFactory = function(assert) {
    1.15 +  let mod = require('./modules/async2');
    1.16 +  assert.equal(mod.name, 'async2', 'name proprety was exported properly');
    1.17 +  assert.ok(mod.traditional2Name !== 'traditional2', '1st is ignored');
    1.18 +};
    1.19 +/* Disable test that require AMD specific functionality:
    1.20 +
    1.21 +// define() that exports a function as the module value,
    1.22 +// specifying a module name.
    1.23 +exports.testDefExport = function(assert) {
    1.24 +  var add = require('modules/add');
    1.25 +  assert.equal(add(1, 1), 2, 'Named define() exporting a function');
    1.26 +};
    1.27 +
    1.28 +// define() that exports function as a value, but is anonymous
    1.29 +exports.testAnonDefExport = function (assert) {
    1.30 +  var subtract = require('modules/subtract');
    1.31 +  assert.equal(subtract(4, 2), 2,
    1.32 +                   'Anonymous define() exporting a function');
    1.33 +}
    1.34 +
    1.35 +// using require([], function () {}) to load modules.
    1.36 +exports.testSimpleRequire = function (assert) {
    1.37 +  require(['modules/blue', 'modules/orange'], function (blue, orange) {
    1.38 +    assert.equal(blue.name, 'blue', 'Simple require for blue');
    1.39 +    assert.equal(orange.name, 'orange', 'Simple require for orange');
    1.40 +    assert.equal(orange.parentType, 'color',
    1.41 +                     'Simple require dependency check for orange');
    1.42 +  });
    1.43 +}
    1.44 +
    1.45 +// using nested require([]) calls.
    1.46 +exports.testSimpleRequireNested = function (assert) {
    1.47 +  require(['modules/blue', 'modules/orange', 'modules/green'],
    1.48 +  function (blue, orange, green) {
    1.49 +
    1.50 +    require(['modules/orange', 'modules/red'], function (orange, red) {
    1.51 +      assert.equal(red.name, 'red', 'Simple require for red');
    1.52 +      assert.equal(red.parentType, 'color',
    1.53 +                       'Simple require dependency check for red');
    1.54 +      assert.equal(blue.name, 'blue', 'Simple require for blue');
    1.55 +      assert.equal(orange.name, 'orange', 'Simple require for orange');
    1.56 +      assert.equal(orange.parentType, 'color',
    1.57 +                       'Simple require dependency check for orange');
    1.58 +      assert.equal(green.name, 'green', 'Simple require for green');
    1.59 +      assert.equal(green.parentType, 'color',
    1.60 +                       'Simple require dependency check for green');
    1.61 +    });
    1.62 +
    1.63 +  });
    1.64 +}
    1.65 +
    1.66 +// requiring a traditional module, that uses async, that use traditional and
    1.67 +// async, with a circular reference
    1.68 +exports.testMixedCircular = function (assert) {
    1.69 +  var t = require('modules/traditional1');
    1.70 +  assert.equal(t.name, 'traditional1', 'Testing name');
    1.71 +  assert.equal(t.traditional2Name, 'traditional2',
    1.72 +                   'Testing dependent name');
    1.73 +  assert.equal(t.traditional1Name, 'traditional1', 'Testing circular name');
    1.74 +  assert.equal(t.async2Name, 'async2', 'Testing async2 name');
    1.75 +  assert.equal(t.async2Traditional2Name, 'traditional2',
    1.76 +                   'Testing nested traditional2 name');
    1.77 +}
    1.78 +
    1.79 +// Testing define()(function(require) {}) with some that use exports,
    1.80 +// some that use return.
    1.81 +exports.testAnonExportsReturn = function (assert) {
    1.82 +  var lion = require('modules/lion');
    1.83 +  require(['modules/tiger', 'modules/cheetah'], function (tiger, cheetah) {
    1.84 +    assert.equal('lion', lion, 'Check lion name');
    1.85 +    assert.equal('tiger', tiger.name, 'Check tiger name');
    1.86 +    assert.equal('cat', tiger.type, 'Check tiger type');
    1.87 +    assert.equal('cheetah', cheetah(), 'Check cheetah name');
    1.88 +  });
    1.89 +}
    1.90 +
    1.91 +// circular dependency
    1.92 +exports.testCircular = function (assert) {
    1.93 +  var pollux = require('modules/pollux'),
    1.94 +      castor = require('modules/castor');
    1.95 +
    1.96 +  assert.equal(pollux.name, 'pollux', 'Pollux\'s name');
    1.97 +  assert.equal(pollux.getCastorName(),
    1.98 +                   'castor', 'Castor\'s name from Pollux.');
    1.99 +  assert.equal(castor.name, 'castor', 'Castor\'s name');
   1.100 +  assert.equal(castor.getPolluxName(), 'pollux',
   1.101 +                   'Pollux\'s name from Castor.');
   1.102 +}
   1.103 +
   1.104 +// test a bad module that asks for exports but also does a define() return
   1.105 +exports.testBadExportAndReturn = function (assert) {
   1.106 +  var passed = false;
   1.107 +  try {
   1.108 +    var bad = require('modules/badExportAndReturn');
   1.109 +  } catch(e) {
   1.110 +    passed = /cannot use exports and also return/.test(e.toString());
   1.111 +  }
   1.112 +  assert.equal(passed, true, 'Make sure exports and return fail');
   1.113 +}
   1.114 +
   1.115 +// test a bad circular dependency, where an exported value is needed, but
   1.116 +// the return value happens too late, a module already asked for the exported
   1.117 +// value.
   1.118 +exports.testBadExportAndReturnCircular = function (assert) {
   1.119 +  var passed = false;
   1.120 +  try {
   1.121 +    var bad = require('modules/badFirst');
   1.122 +  } catch(e) {
   1.123 +    passed = /after another module has referenced its exported value/
   1.124 +             .test(e.toString());
   1.125 +  }
   1.126 +  assert.equal(passed, true, 'Make sure return after an exported ' +
   1.127 +                                 'value is grabbed by another module fails.');
   1.128 +}
   1.129 +
   1.130 +// only allow one define call per file.
   1.131 +exports.testOneDefine = function (assert) {
   1.132 +  var passed = false;
   1.133 +  try {
   1.134 +    var dupe = require('modules/dupe');
   1.135 +  } catch(e) {
   1.136 +    passed = /Only one call to define/.test(e.toString());
   1.137 +  }
   1.138 +  assert.equal(passed, true, 'Only allow one define call per module');
   1.139 +}
   1.140 +
   1.141 +// only allow one define call per file, testing a bad nested define call.
   1.142 +exports.testOneDefineNested = function (assert) {
   1.143 +  var passed = false;
   1.144 +  try {
   1.145 +    var dupe = require('modules/dupeNested');
   1.146 +  } catch(e) {
   1.147 +    passed = /Only one call to define/.test(e.toString());
   1.148 +  }
   1.149 +  assert.equal(passed, true, 'Only allow one define call per module');
   1.150 +}
   1.151 +*/
   1.152 +
   1.153 +require('sdk/test').run(exports);

mercurial