1515 * ******************************************************************************/
1616
1717var GalenCore = {
18+ settings : {
19+ parameterization : {
20+ stackBackwards : false
21+ }
22+ } ,
23+ futureData : {
24+ stack : [ ] ,
25+ push : function ( name , value ) {
26+ this . stack . push ( {
27+ name : name ,
28+ value : value
29+ } ) ;
30+ } ,
31+ pop : function ( ) {
32+ if ( this . stack . length > 0 ) {
33+ this . stack . pop ( ) ;
34+ }
35+ } ,
36+ fetchAll : function ( ) {
37+ var data = { } ;
38+ for ( var i = 0 ; i < this . stack . length ; i ++ ) {
39+ var name = this . stack [ i ] . name ;
40+ var value = this . stack [ i ] . value ;
41+
42+
43+ if ( data [ name ] == null || data [ name ] == undefined ) {
44+ data [ name ] = [ value ] ;
45+ }
46+ else {
47+ data [ name ] . push ( value ) ;
48+ }
49+ }
50+ return data ;
51+ }
52+ } ,
1853 parametersStack : {
1954 stack : [ ] ,
2055 add : function ( parameters ) {
@@ -30,6 +65,25 @@ var GalenCore = {
3065 return this . stack [ this . stack . length - 1 ] ;
3166 }
3267 else return null ;
68+ } ,
69+ fetchAll : function ( ) {
70+ var args = [ ] ;
71+
72+ if ( GalenCore . settings . parameterization . stackBackwards ) {
73+ for ( var i = this . stack . length - 1 ; i >= 0 ; i -- ) {
74+ for ( var j = 0 ; j < this . stack [ i ] . length ; j ++ ) {
75+ args . push ( this . stack [ i ] [ j ] ) ;
76+ }
77+ }
78+ }
79+ else {
80+ for ( var i = 0 ; i < this . stack . length ; i ++ ) {
81+ for ( var j = 0 ; j < this . stack [ i ] . length ; j ++ ) {
82+ args . push ( this . stack [ i ] [ j ] ) ;
83+ }
84+ }
85+ }
86+ return args ;
3387 }
3488 } ,
3589 processVariable : function ( varName ) {
@@ -101,7 +155,8 @@ function test(name, callback) {
101155 var aTest = {
102156 testName : GalenCore . processTestName ( name ) ,
103157 callbacks : callbacks ,
104- arguments : GalenCore . parametersStack . last ( ) ,
158+ arguments : GalenCore . parametersStack . fetchAll ( ) ,
159+ data : GalenCore . futureData . fetchAll ( ) ,
105160 on : function ( arguments , callback ) {
106161 if ( Array . isArray ( arguments ) ) {
107162 this . arguments = arguments ;
@@ -133,7 +188,7 @@ function test(name, callback) {
133188 this . listener = listener || null ;
134189 if ( this . callbacks != null ) {
135190 for ( var i = 0 ; i < this . callbacks . length ; i ++ ) {
136- invokeFunc ( this . arguments , this . callbacks [ i ] ) ;
191+ invokeFunc ( this , this . arguments , this . callbacks [ i ] ) ;
137192 }
138193 }
139194 }
@@ -147,7 +202,7 @@ function test(name, callback) {
147202function parameterizeByArray ( rows , callback ) {
148203 for ( var i = 0 ; i < rows . length ; i ++ ) {
149204 GalenCore . parametersStack . add ( rows [ i ] ) ;
150- invokeFunc ( rows [ i ] , callback ) ;
205+ invokeFunc ( this , rows [ i ] , callback ) ;
151206 GalenCore . parametersStack . pop ( ) ;
152207 }
153208} ;
@@ -163,29 +218,29 @@ function parameterizeByMap(map, callback) {
163218 }
164219}
165220
166- function invokeFunc ( args , callback ) {
221+ function invokeFunc ( object , args , callback ) {
167222 if ( args == undefined || args == null ) {
168- return callback ( ) ;
223+ return callback . call ( object ) ;
169224 }
170225
171226 switch ( args . length ) {
172- case 0 : return callback ( ) ;
173- case 1 : return callback ( args [ 0 ] ) ;
174- case 2 : return callback ( args [ 0 ] , args [ 1 ] ) ;
175- case 3 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] ) ;
176- case 4 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] ) ;
177- case 5 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] ) ;
178- case 6 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] ) ;
179- case 7 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] ) ;
180- case 8 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] ) ;
181- case 9 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] ) ;
182- case 10 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] ) ;
183- case 11 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] ) ;
184- case 12 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] , args [ 11 ] ) ;
185- case 13 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] , args [ 11 ] , args [ 12 ] ) ;
186- case 14 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] , args [ 11 ] , args [ 12 ] , args [ 13 ] ) ;
187- case 15 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] , args [ 11 ] , args [ 12 ] , args [ 13 ] , args [ 14 ] ) ;
188- case 16 : return callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] , args [ 11 ] , args [ 12 ] , args [ 13 ] , args [ 14 ] , args [ 15 ] ) ;
227+ case 0 : return callback . call ( object ) ;
228+ case 1 : return callback . call ( object , args [ 0 ] ) ;
229+ case 2 : return callback . call ( object , args [ 0 ] , args [ 1 ] ) ;
230+ case 3 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] ) ;
231+ case 4 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] ) ;
232+ case 5 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] ) ;
233+ case 6 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] ) ;
234+ case 7 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] ) ;
235+ case 8 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] ) ;
236+ case 9 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] ) ;
237+ case 10 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] ) ;
238+ case 11 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] ) ;
239+ case 12 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] , args [ 11 ] ) ;
240+ case 13 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] , args [ 11 ] , args [ 12 ] ) ;
241+ case 14 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] , args [ 11 ] , args [ 12 ] , args [ 13 ] ) ;
242+ case 15 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] , args [ 11 ] , args [ 12 ] , args [ 13 ] , args [ 14 ] ) ;
243+ case 16 : return callback . call ( object , args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] , args [ 4 ] , args [ 5 ] , args [ 6 ] , args [ 7 ] , args [ 8 ] , args [ 9 ] , args [ 10 ] , args [ 11 ] , args [ 12 ] , args [ 13 ] , args [ 14 ] , args [ 15 ] ) ;
189244 }
190245}
191246
@@ -198,6 +253,15 @@ function forAll (data, callback) {
198253 }
199254} ;
200255
256+ function forOnly ( data , callback ) {
257+ if ( Array . isArray ( data ) ) {
258+ return parameterizeByArray ( [ data ] , callback ) ;
259+ }
260+ else {
261+ return parameterizeByArray ( [ [ data ] ] , callback ) ;
262+ }
263+ }
264+
201265function beforeTestSuite ( callback ) {
202266 _galenCore . addBeforeTestSuiteEvent ( new TestSuiteEvent ( {
203267 callback : {
@@ -254,14 +318,26 @@ function retry(times, callback) {
254318 else return callback ( ) ;
255319}
256320
321+ function createTestDataProvider ( varName ) {
322+ return function ( varValue , callback ) {
323+
324+ GalenCore . futureData . push ( varName , varValue ) ;
325+ callback ( ) ;
326+ GalenCore . futureData . pop ( ) ;
327+ } ;
328+ }
329+
257330
258331
259332( function ( exports ) {
260333 exports . test = test ;
261334 exports . forAll = forAll ;
335+ exports . forOnly = forOnly ;
262336 exports . beforeTestSuite = beforeTestSuite ;
263337 exports . afterTestSuite = afterTestSuite ;
264338 exports . beforeTest = beforeTest ;
265339 exports . afterTest = afterTest ;
266340 exports . retry = retry ;
341+ exports . createTestDataProvider = createTestDataProvider ;
342+ exports . GalenCore = GalenCore ;
267343} ) ( this ) ;
0 commit comments