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);