@@ -95,7 +95,7 @@ exports.FetchAllWithObjectArrayOption = function (test) {
95
95
test . ok ( err === null , "res.fetchAll() err===null" ) ;
96
96
test . ok ( Array . isArray ( rows ) , "Result returns an array" ) ;
97
97
test . ok ( Array . isArray ( rows [ 0 ] ) , "Result returns an array of arrays" ) ;
98
- test . same ( rows , [ [ 'small' , [ 'red' ] ] ] , "conn.querySync('SELECT ...').fetchAll({'array': true})" ) ;
98
+ test . same ( rows , [ [ 'small' , [ 'red' ] ] ] , "conn.querySync('SELECT ...').fetchAll({'array': true})" ) ;
99
99
res . freeSync ( ) ;
100
100
101
101
conn . closeSync ( ) ;
@@ -133,3 +133,150 @@ exports.FetchAllSyncWithObjectArrayOption = function (test) {
133
133
test . done ( ) ;
134
134
} ;
135
135
136
+ exports . FetchAllWithObjectArrayOption = function ( test ) {
137
+ test . expect ( 9 ) ;
138
+
139
+ var
140
+ conn = mysql_libmysqlclient . createConnectionSync ( cfg . host , cfg . user , cfg . password , cfg . database ) ,
141
+ res ;
142
+ test . ok ( conn , "mysql_libmysqlclient.createConnectionSync(host, user, password, database)" ) ;
143
+
144
+ res = conn . querySync ( "SELECT t1.size, t1.colors, t2.size, t2.colors " +
145
+ "FROM " + cfg . test_table + " t1, " + cfg . test_table2 + " t2 " +
146
+ "WHERE t1.size = t2.size AND t1.size != 'medium';" ) ;
147
+ test . ok ( res , "SELECT" ) ;
148
+
149
+ res . fetchAll ( { 'structured' : false } , function ( err , rows ) {
150
+ test . ok ( err === null , "res.fetchAll() err===null" ) ;
151
+ test . same ( rows ,
152
+ [ { size : 'small' , colors : 'red' }
153
+ , { size : 'small' , colors : 'orange' }
154
+ , { size : 'large' , colors : 'deep purple' }
155
+ , { size : 'large' , colors : 'deep purple' }
156
+ ] , "conn.querySync('SELECT ...').fetchAllSync({'structured': false})" ) ;
157
+ res . freeSync ( ) ;
158
+
159
+ res = conn . querySync ( "SELECT t1.size, t1.colors, t2.size, t2.colors " +
160
+ "FROM " + cfg . test_table + " t1, " + cfg . test_table2 + " t2 " +
161
+ "WHERE t1.size = t2.size AND t1.size != 'medium' AND t1.colors != 'green';" ) ;
162
+ test . ok ( res , "SELECT" ) ;
163
+
164
+ res . fetchAll ( { 'structured' : true } , function ( err , rows ) {
165
+ test . ok ( err === null , "res.fetchAll() err===null" ) ;
166
+ test . ok ( Array . isArray ( rows ) , "Result returns an array" ) ;
167
+ test . ok ( rows [ 0 ] instanceof Object , "Result returns an array of objects" ) ;
168
+ test . same ( rows ,
169
+ [ { t1 : { size : 'small' , colors : [ 'red' ] }
170
+ , t2 : { size : 'small' , colors : 'red' }
171
+ }
172
+ , { t1 : { size : 'small' , colors : [ 'red' ] }
173
+ , t2 : { size : 'small' , colors : 'orange' }
174
+ }
175
+ , { t1 : { size : 'large' , colors : [ 'red' , 'blue' ] }
176
+ , t2 : { size : 'large' , colors : 'deep purple' }
177
+ }
178
+ ] , "conn.querySync('SELECT ...').fetchAll({'structured': true})" ) ;
179
+ res . freeSync ( ) ;
180
+
181
+ conn . closeSync ( ) ;
182
+ test . done ( ) ;
183
+ } ) ;
184
+ } ) ;
185
+ } ;
186
+
187
+ exports . FetchAllSyncWithObjectStructuredOption = function ( test ) {
188
+ test . expect ( 7 ) ;
189
+
190
+ var
191
+ conn = mysql_libmysqlclient . createConnectionSync ( cfg . host , cfg . user , cfg . password , cfg . database ) ,
192
+ res ,
193
+ rows ;
194
+ test . ok ( conn , "mysql_libmysqlclient.createConnectionSync(host, user, password, database)" ) ;
195
+
196
+ res = conn . querySync ( "SELECT t1.size, t1.colors, t2.size, t2.colors " +
197
+ "FROM " + cfg . test_table + " t1, " + cfg . test_table2 + " t2 " +
198
+ "WHERE t1.size = t2.size AND t1.size != 'medium';" ) ;
199
+ test . ok ( res , "SELECT" ) ;
200
+
201
+ rows = res . fetchAllSync ( { 'structured' : false } ) ;
202
+ test . same ( rows ,
203
+ [ { size : 'small' , colors : 'red' }
204
+ , { size : 'small' , colors : 'orange' }
205
+ , { size : 'large' , colors : 'deep purple' }
206
+ , { size : 'large' , colors : 'deep purple' }
207
+ ] , "conn.querySync('SELECT ...').fetchAllSync({'structured': false})" ) ;
208
+ res . freeSync ( ) ;
209
+
210
+ res = conn . querySync ( "SELECT t1.size, t1.colors, t2.size, t2.colors " +
211
+ "FROM " + cfg . test_table + " t1, " + cfg . test_table2 + " t2 " +
212
+ "WHERE t1.size = t2.size AND t1.size != 'medium' AND t1.colors != 'green';" ) ;
213
+ test . ok ( res , "SELECT" ) ;
214
+
215
+ rows = res . fetchAllSync ( { 'structured' : true } ) ;
216
+ test . ok ( Array . isArray ( rows ) , "Result returns an array" ) ;
217
+ test . ok ( rows [ 0 ] instanceof Object , "Result returns an array of objects" ) ;
218
+ test . same ( rows ,
219
+ [ { t1 : { size : 'small' , colors : [ 'red' ] }
220
+ , t2 : { size : 'small' , colors : 'red' }
221
+ }
222
+ , { t1 : { size : 'small' , colors : [ 'red' ] }
223
+ , t2 : { size : 'small' , colors : 'orange' }
224
+ }
225
+ , { t1 : { size : 'large' , colors : [ 'red' , 'blue' ] }
226
+ , t2 : { size : 'large' , colors : 'deep purple' }
227
+ }
228
+ ] , "conn.querySync('SELECT ...').fetchAllSync({'structured': true})" ) ;
229
+ res . freeSync ( ) ;
230
+
231
+ conn . closeSync ( ) ;
232
+ test . done ( ) ;
233
+ } ;
234
+
235
+ exports . FetchAllWithObjectOptionsConflicted = function ( test ) {
236
+ test . expect ( 3 ) ;
237
+
238
+ var
239
+ conn = mysql_libmysqlclient . createConnectionSync ( cfg . host , cfg . user , cfg . password , cfg . database ) ,
240
+ res ,
241
+ rows ;
242
+ test . ok ( conn , "mysql_libmysqlclient.createConnectionSync(host, user, password, database)" ) ;
243
+
244
+ res = conn . querySync ( "SELECT t1.size, t1.colors, t2.size, t2.colors " +
245
+ "FROM " + cfg . test_table + " t1, " + cfg . test_table2 + " t2 " +
246
+ "WHERE t1.size = t2.size AND t1.size != 'medium';" ) ;
247
+ test . ok ( res , "SELECT" ) ;
248
+
249
+ test . throws ( function ( ) {
250
+ res . fetchAll ( { 'array' : true , 'structured' : true } , function ( err , rows ) { } ) ;
251
+ } , Error , "You can't mix 'array' and 'structured' parameters" ) ;
252
+
253
+ res . freeSync ( ) ;
254
+
255
+ conn . closeSync ( ) ;
256
+ test . done ( ) ;
257
+ } ;
258
+
259
+ exports . FetchAllSyncWithObjectOptionsConflicted = function ( test ) {
260
+ test . expect ( 3 ) ;
261
+
262
+ var
263
+ conn = mysql_libmysqlclient . createConnectionSync ( cfg . host , cfg . user , cfg . password , cfg . database ) ,
264
+ res ,
265
+ rows ;
266
+ test . ok ( conn , "mysql_libmysqlclient.createConnectionSync(host, user, password, database)" ) ;
267
+
268
+ res = conn . querySync ( "SELECT t1.size, t1.colors, t2.size, t2.colors " +
269
+ "FROM " + cfg . test_table + " t1, " + cfg . test_table2 + " t2 " +
270
+ "WHERE t1.size = t2.size AND t1.size != 'medium';" ) ;
271
+ test . ok ( res , "SELECT" ) ;
272
+
273
+ test . throws ( function ( ) {
274
+ rows = res . fetchAllSync ( { 'array' : true , 'structured' : true } ) ;
275
+ } , Error , "You can't mix 'array' and 'structured' parameters" ) ;
276
+
277
+ res . freeSync ( ) ;
278
+
279
+ conn . closeSync ( ) ;
280
+ test . done ( ) ;
281
+ } ;
282
+
0 commit comments