|
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
4 |
|
5 exports.testDefine = function(assert) { |
|
6 let tiger = require('./modules/tiger'); |
|
7 assert.equal(tiger.name, 'tiger', 'name proprety was exported properly'); |
|
8 assert.equal(tiger.type, 'cat', 'property form other module exported'); |
|
9 }; |
|
10 |
|
11 exports.testDefineInoresNonFactory = function(assert) { |
|
12 let mod = require('./modules/async2'); |
|
13 assert.equal(mod.name, 'async2', 'name proprety was exported properly'); |
|
14 assert.ok(mod.traditional2Name !== 'traditional2', '1st is ignored'); |
|
15 }; |
|
16 /* Disable test that require AMD specific functionality: |
|
17 |
|
18 // define() that exports a function as the module value, |
|
19 // specifying a module name. |
|
20 exports.testDefExport = function(assert) { |
|
21 var add = require('modules/add'); |
|
22 assert.equal(add(1, 1), 2, 'Named define() exporting a function'); |
|
23 }; |
|
24 |
|
25 // define() that exports function as a value, but is anonymous |
|
26 exports.testAnonDefExport = function (assert) { |
|
27 var subtract = require('modules/subtract'); |
|
28 assert.equal(subtract(4, 2), 2, |
|
29 'Anonymous define() exporting a function'); |
|
30 } |
|
31 |
|
32 // using require([], function () {}) to load modules. |
|
33 exports.testSimpleRequire = function (assert) { |
|
34 require(['modules/blue', 'modules/orange'], function (blue, orange) { |
|
35 assert.equal(blue.name, 'blue', 'Simple require for blue'); |
|
36 assert.equal(orange.name, 'orange', 'Simple require for orange'); |
|
37 assert.equal(orange.parentType, 'color', |
|
38 'Simple require dependency check for orange'); |
|
39 }); |
|
40 } |
|
41 |
|
42 // using nested require([]) calls. |
|
43 exports.testSimpleRequireNested = function (assert) { |
|
44 require(['modules/blue', 'modules/orange', 'modules/green'], |
|
45 function (blue, orange, green) { |
|
46 |
|
47 require(['modules/orange', 'modules/red'], function (orange, red) { |
|
48 assert.equal(red.name, 'red', 'Simple require for red'); |
|
49 assert.equal(red.parentType, 'color', |
|
50 'Simple require dependency check for red'); |
|
51 assert.equal(blue.name, 'blue', 'Simple require for blue'); |
|
52 assert.equal(orange.name, 'orange', 'Simple require for orange'); |
|
53 assert.equal(orange.parentType, 'color', |
|
54 'Simple require dependency check for orange'); |
|
55 assert.equal(green.name, 'green', 'Simple require for green'); |
|
56 assert.equal(green.parentType, 'color', |
|
57 'Simple require dependency check for green'); |
|
58 }); |
|
59 |
|
60 }); |
|
61 } |
|
62 |
|
63 // requiring a traditional module, that uses async, that use traditional and |
|
64 // async, with a circular reference |
|
65 exports.testMixedCircular = function (assert) { |
|
66 var t = require('modules/traditional1'); |
|
67 assert.equal(t.name, 'traditional1', 'Testing name'); |
|
68 assert.equal(t.traditional2Name, 'traditional2', |
|
69 'Testing dependent name'); |
|
70 assert.equal(t.traditional1Name, 'traditional1', 'Testing circular name'); |
|
71 assert.equal(t.async2Name, 'async2', 'Testing async2 name'); |
|
72 assert.equal(t.async2Traditional2Name, 'traditional2', |
|
73 'Testing nested traditional2 name'); |
|
74 } |
|
75 |
|
76 // Testing define()(function(require) {}) with some that use exports, |
|
77 // some that use return. |
|
78 exports.testAnonExportsReturn = function (assert) { |
|
79 var lion = require('modules/lion'); |
|
80 require(['modules/tiger', 'modules/cheetah'], function (tiger, cheetah) { |
|
81 assert.equal('lion', lion, 'Check lion name'); |
|
82 assert.equal('tiger', tiger.name, 'Check tiger name'); |
|
83 assert.equal('cat', tiger.type, 'Check tiger type'); |
|
84 assert.equal('cheetah', cheetah(), 'Check cheetah name'); |
|
85 }); |
|
86 } |
|
87 |
|
88 // circular dependency |
|
89 exports.testCircular = function (assert) { |
|
90 var pollux = require('modules/pollux'), |
|
91 castor = require('modules/castor'); |
|
92 |
|
93 assert.equal(pollux.name, 'pollux', 'Pollux\'s name'); |
|
94 assert.equal(pollux.getCastorName(), |
|
95 'castor', 'Castor\'s name from Pollux.'); |
|
96 assert.equal(castor.name, 'castor', 'Castor\'s name'); |
|
97 assert.equal(castor.getPolluxName(), 'pollux', |
|
98 'Pollux\'s name from Castor.'); |
|
99 } |
|
100 |
|
101 // test a bad module that asks for exports but also does a define() return |
|
102 exports.testBadExportAndReturn = function (assert) { |
|
103 var passed = false; |
|
104 try { |
|
105 var bad = require('modules/badExportAndReturn'); |
|
106 } catch(e) { |
|
107 passed = /cannot use exports and also return/.test(e.toString()); |
|
108 } |
|
109 assert.equal(passed, true, 'Make sure exports and return fail'); |
|
110 } |
|
111 |
|
112 // test a bad circular dependency, where an exported value is needed, but |
|
113 // the return value happens too late, a module already asked for the exported |
|
114 // value. |
|
115 exports.testBadExportAndReturnCircular = function (assert) { |
|
116 var passed = false; |
|
117 try { |
|
118 var bad = require('modules/badFirst'); |
|
119 } catch(e) { |
|
120 passed = /after another module has referenced its exported value/ |
|
121 .test(e.toString()); |
|
122 } |
|
123 assert.equal(passed, true, 'Make sure return after an exported ' + |
|
124 'value is grabbed by another module fails.'); |
|
125 } |
|
126 |
|
127 // only allow one define call per file. |
|
128 exports.testOneDefine = function (assert) { |
|
129 var passed = false; |
|
130 try { |
|
131 var dupe = require('modules/dupe'); |
|
132 } catch(e) { |
|
133 passed = /Only one call to define/.test(e.toString()); |
|
134 } |
|
135 assert.equal(passed, true, 'Only allow one define call per module'); |
|
136 } |
|
137 |
|
138 // only allow one define call per file, testing a bad nested define call. |
|
139 exports.testOneDefineNested = function (assert) { |
|
140 var passed = false; |
|
141 try { |
|
142 var dupe = require('modules/dupeNested'); |
|
143 } catch(e) { |
|
144 passed = /Only one call to define/.test(e.toString()); |
|
145 } |
|
146 assert.equal(passed, true, 'Only allow one define call per module'); |
|
147 } |
|
148 */ |
|
149 |
|
150 require('sdk/test').run(exports); |