Skip to content

Commit 6766e17

Browse files
committed
Update tests: fix multiple SQL calls. Add tests for potential off-by-one cases
1 parent 3dbbf8c commit 6766e17

9 files changed

+548
-265
lines changed

test/fetchArraySize2.js

Lines changed: 58 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -132,32 +132,25 @@ describe("149. fetchArraySize2.js", function() {
132132
var resultLenExpected = maxRowsVal > (1000-affectedID) ? (1000-affectedID) : maxRowsVal;
133133
if(maxRowsVal === 0) resultLenExpected = 1000 - affectedID;
134134
should.strictEqual(result.rows.length, resultLenExpected);
135-
verifyResult(result.rows, cb);
135+
verifyResult(result.rows, affectedID, cb);
136136
}
137137
);
138138
};
139139

140-
var verifyResult = function(rows, cb) {
141-
async.each(
142-
rows,
143-
verifyEachRow,
144-
function(err) {
145-
should.not.exist(err);
146-
return cb();
147-
}
148-
);
140+
var verifyResult = function(result, affectedID, callback) {
141+
async.forEach(result, function(element, cb) {
142+
var index = result.indexOf(element);
143+
verifyEachRow(index+1+affectedID, element);
144+
cb();
145+
}, function(err) {
146+
should.not.exist(err);
147+
callback();
148+
});
149149
};
150150

151-
var verifyEachRow = function(row, cb) {
152-
var querySql = "select * from " + tableName + " where id = " + row[0];
153-
connection.execute(
154-
querySql,
155-
function(err, result){
156-
should.strictEqual(row[1], result.rows[0][1]);
157-
should.strictEqual(row[0], result.rows[0][0]);
158-
return cb(err);
159-
}
160-
);
151+
var verifyEachRow = function(index, element) {
152+
should.strictEqual(element[1], String(index));
153+
should.strictEqual(element[0], index);
161154
};
162155

163156
it("149.1.1 maxRows > table size > oracledb.fetchArraySize", function(done) {
@@ -243,6 +236,20 @@ describe("149. fetchArraySize2.js", function() {
243236
var affectedID = 0;
244237
basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done);
245238
});
239+
240+
it("149.1.13 maxRows = (table size - 1), fetchArraySize = table size ", function(done) {
241+
var fetchArraySizeVal = 1000;
242+
var maxRowsVal = 999;
243+
var affectedID = 0;
244+
basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done);
245+
});
246+
247+
it("149.1.14 fetchArraySize = (table size - 1), maxRows = table size ", function(done) {
248+
var fetchArraySizeVal = 999;
249+
var maxRowsVal = 1000;
250+
var affectedID = 0;
251+
basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done);
252+
});
246253
});
247254

248255
describe("149.2 REF CURSORS with different numRows and oracledb.fetchArraySize", function() {
@@ -400,6 +407,18 @@ describe("149. fetchArraySize2.js", function() {
400407
var numRowsVal = 210;
401408
testRefCursor(fetchArraySizeVal, numRowsVal, done);
402409
});
410+
411+
it("149.2.11 numRows = (table size - 1), fetchArraySize = table size", function(done) {
412+
var fetchArraySizeVal = 1000;
413+
var numRowsVal = 999;
414+
testRefCursor(fetchArraySizeVal, numRowsVal, done);
415+
});
416+
417+
it("149.2.12 fetchArraySize = (table size - 1), numRows = table size", function(done) {
418+
var fetchArraySizeVal = 999;
419+
var numRowsVal = 1000;
420+
testRefCursor(fetchArraySizeVal, numRowsVal, done);
421+
});
403422
});
404423

405424
describe("149.3 queryStream() with different maxRows and oracledb.fetchArraySize", function() {
@@ -434,7 +453,7 @@ describe("149. fetchArraySize2.js", function() {
434453
oracledb.fetchArraySize = fetchArraySizeVal;
435454
oracledb.maxRows = maxRowsVal;
436455
var resultLenExpected = 1000-affectedID;
437-
var querySql = "select * from " + tableName + " where id > " + affectedID + "order by id";
456+
var querySql = "select * from " + tableName + " where id > " + affectedID + " order by id";
438457
var stream = connection.queryStream(querySql);
439458

440459
stream.on('error', function (error) {
@@ -445,7 +464,7 @@ describe("149. fetchArraySize2.js", function() {
445464
stream.on('data', function(data) {
446465
should.exist(data);
447466
counter = counter + 1;
448-
verifyResult(data);
467+
verifyResult(data, counter, affectedID);
449468
});
450469

451470
stream.on('end', function() {
@@ -454,15 +473,9 @@ describe("149. fetchArraySize2.js", function() {
454473
});
455474
};
456475

457-
var verifyResult = function(data) {
458-
connection.execute(
459-
"select * from " + tableName + " where id = " + data[0],
460-
function(err, result) {
461-
should.not.exist(err);
462-
should.strictEqual(data[0], result.rows[0][0]);
463-
should.strictEqual(data[1], result.rows[0][1]);
464-
}
465-
);
476+
var verifyResult = function(data, counter, affectedID) {
477+
should.strictEqual(data[0], counter + affectedID);
478+
should.strictEqual(data[1], String(counter + affectedID));
466479
};
467480

468481
it("149.3.1 maxRows > table size > oracledb.fetchArraySize", function(done) {
@@ -548,6 +561,20 @@ describe("149. fetchArraySize2.js", function() {
548561
var affectedID = 0;
549562
testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done);
550563
});
564+
565+
it("149.3.13 maxRows = (table size - 1), fetchArraySize = table size ", function(done) {
566+
var fetchArraySizeVal = 1000;
567+
var maxRowsVal = 999;
568+
var affectedID = 0;
569+
testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done);
570+
});
571+
572+
it("149.3.14 fetchArraySize = (table size - 1), maxRows = table size ", function(done) {
573+
var fetchArraySizeVal = 999;
574+
var maxRowsVal = 1000;
575+
var affectedID = 0;
576+
testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done);
577+
});
551578
});
552579

553580
});

test/fetchArraySize3.js

Lines changed: 76 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -143,39 +143,47 @@ describe("150. fetchArraySize3.js", function() {
143143
function(err, result) {
144144
should.not.exist(err);
145145
should.strictEqual(result.rows.length, 1000 - affectedRowId);
146-
verifyResult(result.rows);
146+
verifyResult(result.rows, affectedRowId);
147147
callback();
148148
}
149149
);
150150
}
151151
], cb);
152152
};
153153

154-
var verifyResult = function(result) {
154+
var verifyResult = function(result, affectedRowId) {
155155
async.forEach(result, function(element, cb) {
156156
var index = result.indexOf(element);
157-
should.strictEqual(element[0], index+50+1);
158-
should.strictEqual(element[1], "something");
157+
verifyEachRow(index+1+affectedRowId, element);
159158
cb();
160159
}, function(err) {
161160
should.not.exist(err);
162161
});
163162
};
164163

164+
var verifyEachRow = function(index, element) {
165+
should.strictEqual(element[0], index);
166+
should.strictEqual(element[1], "something");
167+
};
168+
165169
it("150.1.1 oracledb.fetchArraySize = 1", function(done) {
166170
dmlBinding(1, 50, done);
167171
});
168172

169173
it("150.1.2 oracledb.fetchArraySize = 50", function(done) {
170-
dmlBinding(50, 50, done);
174+
dmlBinding(50, 0, done);
171175
});
172176

173177
it("150.1.3 oracledb.fetchArraySize = 100", function(done) {
174-
dmlBinding(100, 50, done);
178+
dmlBinding(100, 2, done);
175179
});
176180

177181
it("150.1.4 oracledb.fetchArraySize = 1000", function(done) {
178-
dmlBinding(1000, 50, done);
182+
dmlBinding(1000, 1, done);
183+
});
184+
185+
it("150.1.5 oracledb.fetchArraySize = (table size - 1)", function(done) {
186+
dmlBinding(999, 0, done);
179187
});
180188

181189
});
@@ -283,15 +291,19 @@ describe("150. fetchArraySize3.js", function() {
283291
var proc_verifyResult_inout = function(result, updateFromId, callback) {
284292
async.forEach(result, function(element, cb) {
285293
var index = result.indexOf(element);
286-
var expectedTail = index + updateFromId + 1;
287-
should.strictEqual(element, "something new " + expectedTail);
294+
proc_verifyEachRows_inout(index, element, updateFromId);
288295
cb();
289296
}, function(err) {
290297
should.not.exist(err);
291298
callback();
292299
});
293300
};
294301

302+
var proc_verifyEachRows_inout = function(index, element, updateFromId) {
303+
var expectedTail = index + updateFromId + 1;
304+
should.strictEqual(element, "something new " + expectedTail);
305+
};
306+
295307
var proc_query_out = function(maxArraySizeVal, fetchArraySizeVal, cb) {
296308
oracledb.fetchArraySize = fetchArraySizeVal;
297309
connection.execute(
@@ -311,13 +323,17 @@ describe("150. fetchArraySize3.js", function() {
311323
var proc_verifyResult_out = function(result) {
312324
async.forEach(result, function(element, cb) {
313325
var index = result.indexOf(element);
314-
should.strictEqual(element, index+1);
326+
proc_verifyEachRow_out(index, element);
315327
cb();
316328
}, function(err) {
317329
should.not.exist(err);
318330
});
319331
};
320332

333+
var proc_verifyEachRow_out = function(index, element) {
334+
should.strictEqual(element, index+1);
335+
};
336+
321337
it("150.2.1 Bind OUT with oracledb.fetchArraySize = 1", function(done) {
322338
var maxArraySizeVal = 1000;
323339
var fetchArraySizeVal = 1;
@@ -342,34 +358,47 @@ describe("150. fetchArraySize3.js", function() {
342358
proc_query_out(maxArraySizeVal, fetchArraySizeVal, done);
343359
});
344360

345-
it("150.2.5 Bind IN OUT with oracledb.fetchArraySize = 1", function(done) {
361+
it("150.2.5 Bind OUT with oracledb.fetchArraySize = (table size - 1)", function(done) {
362+
var maxArraySizeVal = 2000;
363+
var fetchArraySizeVal = 999;
364+
proc_query_out(maxArraySizeVal, fetchArraySizeVal, done);
365+
});
366+
367+
it("150.2.6 Bind IN OUT with oracledb.fetchArraySize = 1", function(done) {
346368
var updateFromId = 20;
347369
var maxArraySizeVal = 1000;
348370
var fetchArraySizeVal = 1;
349371
proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done);
350372
});
351373

352-
it("150.2.6 Bind IN OUT with oracledb.fetchArraySize = 50", function(done) {
374+
it("150.2.7 Bind IN OUT with oracledb.fetchArraySize = 50", function(done) {
353375
var updateFromId = 20;
354376
var maxArraySizeVal = 1000;
355377
var fetchArraySizeVal = 50;
356378
proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done);
357379
});
358380

359-
it("150.2.7 Bind IN OUT with oracledb.fetchArraySize = 100", function(done) {
381+
it("150.2.8 Bind IN OUT with oracledb.fetchArraySize = 100", function(done) {
360382
var updateFromId = 10;
361383
var maxArraySizeVal = 2000;
362384
var fetchArraySizeVal = 100;
363385
proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done);
364386
});
365387

366-
it("150.2.8 Bind IN OUT with oracledb.fetchArraySize = 1000", function(done) {
388+
it("150.2.9 Bind IN OUT with oracledb.fetchArraySize = 1000", function(done) {
367389
var updateFromId = 5;
368390
var maxArraySizeVal = 2000;
369391
var fetchArraySizeVal = 1000;
370392
proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done);
371393
});
372394

395+
it("150.2.10 Bind IN OUT with oracledb.fetchArraySize = (table size - 1)", function(done) {
396+
var updateFromId = 0;
397+
var maxArraySizeVal = 2000;
398+
var fetchArraySizeVal = 999;
399+
proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done);
400+
});
401+
373402
});
374403

375404
describe("150.3 function binding", function() {
@@ -483,19 +512,22 @@ describe("150. fetchArraySize3.js", function() {
483512
should.strictEqual(result.length, rowsAffected);
484513
async.forEach(result, function(element, cb) {
485514
var index = result.indexOf(element);
486-
if(typeof element === "string") {
487-
var expectedTail = index + updateFromId + 1;
488-
should.strictEqual(element, "something new " + expectedTail);
489-
} else if(typeof element === "number") {
490-
should.strictEqual(element, index + 1 + updateFromId);
491-
}
492-
515+
fun_verifyEachRow_inout(index, element, updateFromId);
493516
cb();
494517
}, function(err) {
495518
should.not.exist(err);
496519
});
497520
};
498521

522+
var fun_verifyEachRow_inout = function(index, element, updateFromId) {
523+
if(typeof element === "string") {
524+
var expectedTail = index + updateFromId + 1;
525+
should.strictEqual(element, "something new " + expectedTail);
526+
} else if(typeof element === "number") {
527+
should.strictEqual(element, index + 1 + updateFromId);
528+
}
529+
};
530+
499531
var fun_query_out = function(affectFromId, maxArraySizeVal, fetchArraySizeVal, cb) {
500532
oracledb.fetchArraySize = fetchArraySizeVal;
501533
connection.execute(
@@ -516,13 +548,17 @@ describe("150. fetchArraySize3.js", function() {
516548
var fun_verifyResult_out = function(result, affectFromId) {
517549
async.forEach(result, function(element, cb) {
518550
var index = result.indexOf(element);
519-
should.strictEqual(element, index+1+affectFromId);
551+
fun_verifyEachRow_out(index, element, affectFromId);
520552
cb();
521553
}, function(err) {
522554
should.not.exist(err);
523555
});
524556
};
525557

558+
var fun_verifyEachRow_out = function(index, element, affectFromId) {
559+
should.strictEqual(element, index+1+affectFromId);
560+
};
561+
526562
it("150.3.1 Bind OUT with oracledb.fetchArraySize = 1", function(done) {
527563
var affectFromId = 10;
528564
var maxArraySizeVal = 1000;
@@ -551,34 +587,48 @@ describe("150. fetchArraySize3.js", function() {
551587
fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done);
552588
});
553589

554-
it("150.3.5 Bind IN OUT with oracledb.fetchArraySize = 1", function(done) {
590+
it("150.3.5 Bind OUT with oracledb.fetchArraySize = (table size - 1)", function(done) {
591+
var affectFromId = 0;
592+
var maxArraySizeVal = 10000;
593+
var fetchArraySizeVal = 999;
594+
fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done);
595+
});
596+
597+
it("150.3.6 Bind IN OUT with oracledb.fetchArraySize = 1", function(done) {
555598
var updateFromId = 20;
556599
var maxArraySizeVal = 1000;
557600
var fetchArraySizeVal = 1;
558601
fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done);
559602
});
560603

561-
it("150.3.6 Bind IN OUT with oracledb.fetchArraySize = 50", function(done) {
604+
it("150.3.7 Bind IN OUT with oracledb.fetchArraySize = 50", function(done) {
562605
var updateFromId = 20;
563606
var maxArraySizeVal = 1000;
564607
var fetchArraySizeVal = 50;
565608
fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done);
566609
});
567610

568-
it("150.3.7 Bind IN OUT with oracledb.fetchArraySize = 100", function(done) {
611+
it("150.3.8 Bind IN OUT with oracledb.fetchArraySize = 100", function(done) {
569612
var updateFromId = 10;
570613
var maxArraySizeVal = 2000;
571614
var fetchArraySizeVal = 100;
572615
fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done);
573616
});
574617

575-
it("150.3.8 Bind IN OUT with oracledb.fetchArraySize = 1000", function(done) {
618+
it("150.3.9 Bind IN OUT with oracledb.fetchArraySize = 1000", function(done) {
576619
var updateFromId = 5;
577620
var maxArraySizeVal = 2000;
578621
var fetchArraySizeVal = 1000;
579622
fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done);
580623
});
581624

625+
it("150.3.10 Bind IN OUT with oracledb.fetchArraySize = (table size - 1)", function(done) {
626+
var updateFromId = 0;
627+
var maxArraySizeVal = 2000;
628+
var fetchArraySizeVal = 999;
629+
fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done);
630+
});
631+
582632
});
583633

584634
});

0 commit comments

Comments
 (0)