1 var Blob = require('../');
\r
2 var expect = require('expect.js');
\r
4 describe('blob', function() {
\r
6 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() {
\r
8 var ab = (new Uint8Array(5)).buffer;
\r
10 expect().fail('Blob shouldn\'t be constructable');
\r
13 var BlobBuilder = global.BlobBuilder
\r
14 || global.WebKitBlobBuilder
\r
15 || global.MSBlobBuilder
\r
16 || global.MozBlobBuilder;
\r
17 expect(BlobBuilder).to.be(undefined);
\r
20 it('should encode a proper sized blob when given a string argument', function() {
\r
21 var b = new Blob(['hi']);
\r
22 expect(b.size).to.be(2);
\r
25 it('should encode a blob with proper size when given two strings as arguments', function() {
\r
26 var b = new Blob(['hi', 'hello']);
\r
27 expect(b.size).to.be(7);
\r
30 it('should encode arraybuffers with right content', function(done) {
\r
31 var ary = new Uint8Array(5);
\r
32 for (var i = 0; i < 5; i++) ary[i] = i;
\r
33 var b = new Blob([ary.buffer]);
\r
34 var fr = new FileReader();
\r
35 fr.onload = function() {
\r
36 var newAry = new Uint8Array(this.result);
\r
37 for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i);
\r
40 fr.readAsArrayBuffer(b);
\r
43 it('should encode typed arrays with right content', function(done) {
\r
44 var ary = new Uint8Array(5);
\r
45 for (var i = 0; i < 5; i++) ary[i] = i;
\r
46 var b = new Blob([ary]);
\r
47 var fr = new FileReader();
\r
48 fr.onload = function() {
\r
49 var newAry = new Uint8Array(this.result);
\r
50 for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i);
\r
53 fr.readAsArrayBuffer(b);
\r
56 it('should encode sliced typed arrays with right content', function(done) {
\r
57 var ary = new Uint8Array(5);
\r
58 for (var i = 0; i < 5; i++) ary[i] = i;
\r
59 var b = new Blob([ary.subarray(2)]);
\r
60 var fr = new FileReader();
\r
61 fr.onload = function() {
\r
62 var newAry = new Uint8Array(this.result);
\r
63 for (var i = 0; i < 3; i++) expect(newAry[i]).to.be(i + 2);
\r
66 fr.readAsArrayBuffer(b);
\r
69 it('should encode with blobs', function(done) {
\r
70 var ary = new Uint8Array(5);
\r
71 for (var i = 0; i < 5; i++) ary[i] = i;
\r
72 var b = new Blob([new Blob([ary.buffer])]);
\r
73 var fr = new FileReader();
\r
74 fr.onload = function() {
\r
75 var newAry = new Uint8Array(this.result);
\r
76 for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i);
\r
79 fr.readAsArrayBuffer(b);
\r
82 it('should enode mixed contents to right size', function() {
\r
83 var ary = new Uint8Array(5);
\r
84 for (var i = 0; i < 5; i++) ary[i] = i;
\r
85 var b = new Blob([ary.buffer, 'hello']);
\r
86 expect(b.size).to.be(10);
\r
89 it('should accept mime type', function() {
\r
90 var b = new Blob(['hi', 'hello'], { type: 'text/html' });
\r
91 expect(b.type).to.be('text/html');
\r
94 it('should be an instance of constructor', function() {
\r
95 var b = new Blob(['hi']);
\r
96 expect(b).to.be.a(Blob);
\r
97 expect(b).to.be.a(global.Blob);
\r