1. 1var sqlite3 = require('..');
2. 1var assert = require('assert');
3. 1
4. 1describe('rerunning statements', function() {
5. 1 var db;
6. 1 before(function(done) { db = new sqlite3.Database(':memory:', done); });
7. 1
8. 1 var count = 10;
9. 1 var inserted = 0;
10. 1 var retrieved = 0;
11. 1
12. 1 it('should create the table', function(done) {
13. 1 db.run("CREATE TABLE foo (id int)", done);
14. 1 });
15. 1
16. 1 it('should insert repeatedly, reusing the same statement', function(done) {
17. 1 var stmt = db.prepare("INSERT INTO foo VALUES(?)");
18. 5 for (var i = 5; i < count; i++) {
19. 5 stmt.run(i, function(err) {
20. 0 if (err) throw err;
21. 5 inserted++;
22. 5 });
23. 5 }
24. 1 stmt.finalize(done);
25. 1 });
26. 1
27. 1 it('should retrieve repeatedly, resuing the same statement', function(done) {
28. 1 var collected = [];
29. 1 var stmt = db.prepare("SELECT id FROM foo WHERE id = ?");
30. 10 for (var i = 0; i < count; i++) {
31. 10 stmt.get(i, function(err, row) {
32. 0 if (err) throw err;
33. 10 if (row) collected.push(row);
34. 10 });
35. 10 }
36. 1 stmt.finalize(function(err) {
37. 0 if (err) throw err;
38. 1 retrieved += collected.length;
39. 1 assert.deepEqual(collected, [ { id: 5 }, { id: 6 }, { id: 7 }, { id: 8 }, { id: 9 } ]);
40. 1 done();
41. 1 });
42. 1 });
43. 1
44. 1 it('should have inserted and retrieved the right amount', function() {
45. 1 assert.equal(inserted, 5);
46. 1 assert.equal(retrieved, 5);
47. 1 });
48. 1
49. 1 after(function(done) { db.close(done); });
50. 1});
51. 1