1. 1var sqlite3 = require('..'),
2. 1 fs = require('fs'),
3. 1 assert = require('assert'),
4. 1 Buffer = require('buffer').Buffer;
5. 1
6. 1// lots of elmo
7. 1var elmo = fs.readFileSync(__dirname + '/support/elmo.png');
8. 1
9. 1describe('blob', function() {
10. 1 var db;
11. 1 before(function(done) {
12. 1 db = new sqlite3.Database(':memory:');
13. 1 db.run("CREATE TABLE elmos (id INT, image BLOB)", done);
14. 1 });
15. 1
16. 1 var total = 10;
17. 1 var inserted = 0;
18. 1 var retrieved = 0;
19. 1
20. 1
21. 1 it('should insert blobs', function(done) {
22. 10 for (var i = 0; i < total; i++) {
23. 10 db.run('INSERT INTO elmos (id, image) VALUES (?, ?)', i, elmo, function(err) {
24. 0 if (err) throw err;
25. 10 inserted++;
26. 10 });
27. 10 }
28. 1 db.wait(function() {
29. 1 assert.equal(inserted, total);
30. 1 done();
31. 1 });
32. 1 });
33. 1
34. 1 it('should retrieve the blobs', function(done) {
35. 1 db.all('SELECT id, image FROM elmos ORDER BY id', function(err, rows) {
36. 0 if (err) throw err;
37. 10 for (var i = 0; i < rows.length; i++) {
38. 10 assert.ok(Buffer.isBuffer(rows[i].image));
39. 10 assert.ok(elmo.length, rows[i].image);
40. 10
41.1620740 for (var j = 0; j < elmo.length; j++) {
42. 0 if (elmo[j] !== rows[i].image[j]) {
43. 0 assert.ok(false, "Wrong byte");
44. 0 }
45.1620740 }
46. 10
47. 10 retrieved++;
48. 10 }
49. 1
50. 1 assert.equal(retrieved, total);
51. 1 done();
52. 1 });
53. 1 });
54. 1});
55. 1