|  | function test_blob(fn, expectations) { | 
|  | var expected = expectations.expected, | 
|  | type = expectations.type, | 
|  | desc = expectations.desc; | 
|  |  | 
|  | var t = async_test(desc); | 
|  | t.step(function() { | 
|  | var blob = fn(); | 
|  | assert_true(blob instanceof Blob); | 
|  | assert_false(blob instanceof File); | 
|  | assert_equals(blob.type, type); | 
|  | assert_equals(blob.size, expected.length); | 
|  |  | 
|  | var fr = new FileReader(); | 
|  | fr.onload = t.step_func_done(function(event) { | 
|  | assert_equals(this.result, expected); | 
|  | }, fr); | 
|  | fr.onerror = t.step_func(function(e) { | 
|  | assert_unreached("got error event on FileReader"); | 
|  | }); | 
|  | fr.readAsText(blob, "UTF-8"); | 
|  | }); | 
|  | } | 
|  |  | 
|  | function test_blob_binary(fn, expectations) { | 
|  | var expected = expectations.expected, | 
|  | type = expectations.type, | 
|  | desc = expectations.desc; | 
|  |  | 
|  | var t = async_test(desc); | 
|  | t.step(function() { | 
|  | var blob = fn(); | 
|  | assert_true(blob instanceof Blob); | 
|  | assert_false(blob instanceof File); | 
|  | assert_equals(blob.type, type); | 
|  | assert_equals(blob.size, expected.length); | 
|  |  | 
|  | var fr = new FileReader(); | 
|  | fr.onload = t.step_func_done(function(event) { | 
|  | assert_true(this.result instanceof ArrayBuffer, | 
|  | "Result should be an ArrayBuffer"); | 
|  | assert_array_equals(new Uint8Array(this.result), expected); | 
|  | }, fr); | 
|  | fr.onerror = t.step_func(function(e) { | 
|  | assert_unreached("got error event on FileReader"); | 
|  | }); | 
|  | fr.readAsArrayBuffer(blob); | 
|  | }); | 
|  | } |