1. 1var sqlite3 = require('..');
2. 1var assert = require('assert');
3. 1
4. 1
5. 1describe('serialize() and parallelize()', function() {
6. 1 var db;
7. 1 before(function(done) { db = new sqlite3.Database(':memory:', done); });
8. 1
9. 1 var inserted1 = 0;
10. 1 var inserted2 = 0;
11. 1 var retrieved = 0;
12. 1
13. 1 var count = 1000;
14. 1
15. 1 it('should toggle', function(done) {
16. 1 db.serialize();
17. 1 db.run("CREATE TABLE foo (txt text, num int, flt float, blb blob)");
18. 1 db.parallelize(done);
19. 1 });
20. 1
21. 1 it('should insert rows', function() {
22. 1 var stmt1 = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)");
23. 1 var stmt2 = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)");
24. 500 for (var i = 0; i < count; i++) {
25. 500 // Interleaved inserts with two statements.
26. 500 stmt1.run('String ' + i, i, i * Math.PI, function(err) {
27. 0 if (err) throw err;
28. 500 inserted1++;
29. 500 });
30. 500 i++;
31. 500 stmt2.run('String ' + i, i, i * Math.PI, function(err) {
32. 0 if (err) throw err;
33. 500 inserted2++;
34. 500 });
35. 500 }
36. 1 stmt1.finalize();
37. 1 stmt2.finalize();
38. 1 });
39. 1
40. 1 it('should have inserted all the rows after synchronizing with serialize()', function(done) {
41. 1 db.serialize();
42. 1 db.all("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err, rows) {
43. 0 if (err) throw err;
44. 1000 for (var i = 0; i < rows.length; i++) {
45. 1000 assert.equal(rows[i].txt, 'String ' + i);
46. 1000 assert.equal(rows[i].num, i);
47. 1000 assert.equal(rows[i].flt, i * Math.PI);
48. 1000 assert.equal(rows[i].blb, null);
49. 1000 retrieved++;
50. 1000 }
51. 1
52. 1 assert.equal(count, inserted1 + inserted2, "Didn't insert all rows");
53. 1 assert.equal(count, retrieved, "Didn't retrieve all rows");
54. 1 done();
55. 1 });
56. 1 });
57. 1
58. 1 after(function(done) { db.close(done); });
59. 1});
60. 1
61. 1describe('serialize(fn)', function() {
62. 1 var db;
63. 1 before(function(done) { db = new sqlite3.Database(':memory:', done); });
64. 1
65. 1 var inserted = 0;
66. 1 var retrieved = 0;
67. 1
68. 1 var count = 1000;
69. 1
70. 1 it('should call the callback', function(done) {
71. 1 db.serialize(function() {
72. 1 db.run("CREATE TABLE foo (txt text, num int, flt float, blb blob)");
73. 1
74. 1 var stmt = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)");
75. 1000 for (var i = 0; i < count; i++) {
76. 1000 stmt.run('String ' + i, i, i * Math.PI, function(err) {
77. 0 if (err) throw err;
78. 1000 inserted++;
79. 1000 });
80. 1000 }
81. 1 stmt.finalize();
82. 1
83. 1 db.all("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err, rows) {
84. 0 if (err) throw err;
85. 1000 for (var i = 0; i < rows.length; i++) {
86. 1000 assert.equal(rows[i].txt, 'String ' + i);
87. 1000 assert.equal(rows[i].num, i);
88. 1000 assert.equal(rows[i].flt, i * Math.PI);
89. 1000 assert.equal(rows[i].blb, null);
90. 1000 retrieved++;
91. 1000 }
92. 1 done();
93. 1 });
94. 1 });
95. 1 });
96. 1
97. 1
98. 1 it('should have inserted and retrieved all rows', function() {
99. 1 assert.equal(count, inserted, "Didn't insert all rows");
100. 1 assert.equal(count, retrieved, "Didn't retrieve all rows");
101. 1 });
102. 1
103. 1 after(function(done) { db.close(done); });
104. 1});
105. 1