| var Blob = require('../'); |
| var expect = require('expect.js'); |
| |
| describe('blob', function() { |
| if (!Blob) { |
| it('should not have a blob or a blob builder in the global namespace, or blob should not be a constructor function if the module exports false', function() { |
| try { |
| var ab = (new Uint8Array(5)).buffer; |
| global.Blob([ab]); |
| expect().fail('Blob shouldn\'t be constructable'); |
| } catch (e) {} |
| |
| var BlobBuilder = global.BlobBuilder |
| || global.WebKitBlobBuilder |
| || global.MSBlobBuilder |
| || global.MozBlobBuilder; |
| expect(BlobBuilder).to.be(undefined); |
| }); |
| } else { |
| it('should encode a proper sized blob when given a string argument', function() { |
| var b = new Blob(['hi']); |
| expect(b.size).to.be(2); |
| }); |
| |
| it('should encode a blob with proper size when given two strings as arguments', function() { |
| var b = new Blob(['hi', 'hello']); |
| expect(b.size).to.be(7); |
| }); |
| |
| it('should encode arraybuffers with right content', function(done) { |
| var ary = new Uint8Array(5); |
| for (var i = 0; i < 5; i++) ary[i] = i; |
| var b = new Blob([ary.buffer]); |
| var fr = new FileReader(); |
| fr.onload = function() { |
| var newAry = new Uint8Array(this.result); |
| for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i); |
| done(); |
| }; |
| fr.readAsArrayBuffer(b); |
| }); |
| |
| it('should encode typed arrays with right content', function(done) { |
| var ary = new Uint8Array(5); |
| for (var i = 0; i < 5; i++) ary[i] = i; |
| var b = new Blob([ary]); |
| var fr = new FileReader(); |
| fr.onload = function() { |
| var newAry = new Uint8Array(this.result); |
| for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i); |
| done(); |
| }; |
| fr.readAsArrayBuffer(b); |
| }); |
| |
| it('should encode sliced typed arrays with right content', function(done) { |
| var ary = new Uint8Array(5); |
| for (var i = 0; i < 5; i++) ary[i] = i; |
| var b = new Blob([ary.subarray(2)]); |
| var fr = new FileReader(); |
| fr.onload = function() { |
| var newAry = new Uint8Array(this.result); |
| for (var i = 0; i < 3; i++) expect(newAry[i]).to.be(i + 2); |
| done(); |
| }; |
| fr.readAsArrayBuffer(b); |
| }); |
| |
| it('should encode with blobs', function(done) { |
| var ary = new Uint8Array(5); |
| for (var i = 0; i < 5; i++) ary[i] = i; |
| var b = new Blob([new Blob([ary.buffer])]); |
| var fr = new FileReader(); |
| fr.onload = function() { |
| var newAry = new Uint8Array(this.result); |
| for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i); |
| done(); |
| }; |
| fr.readAsArrayBuffer(b); |
| }); |
| |
| it('should enode mixed contents to right size', function() { |
| var ary = new Uint8Array(5); |
| for (var i = 0; i < 5; i++) ary[i] = i; |
| var b = new Blob([ary.buffer, 'hello']); |
| expect(b.size).to.be(10); |
| }); |
| |
| it('should accept mime type', function() { |
| var b = new Blob(['hi', 'hello'], { type: 'text/html' }); |
| expect(b.type).to.be('text/html'); |
| }); |
| |
| it('should be an instance of constructor', function() { |
| var b = new Blob(['hi']); |
| expect(b).to.be.a(Blob); |
| expect(b).to.be.a(global.Blob); |
| }); |
| } |
| }); |