1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
// GENERATED - DO NOT EDIT
// Copyright 2018+ the Deno authors. All rights reserved. MIT license.
// https://raw.githubusercontent.com/denoland/deno/main/cli/tests/unit/blob_test.ts
import { createDenoTest } from "deno:harness";
const { test, assert, assertEquals, assertStringIncludes, concat } = createDenoTest(import.meta.path);
test(function blobString() {
const b1 = new Blob([
"Hello World"
]);
const str = "Test";
const b2 = new Blob([
b1,
str
]);
assertEquals(b2.size, b1.size + str.length);
});
test(function blobBuffer() {
const buffer = new ArrayBuffer(12);
const u8 = new Uint8Array(buffer);
const f1 = new Float32Array(buffer);
const b1 = new Blob([
buffer,
u8
]);
assertEquals(b1.size, 2 * u8.length);
const b2 = new Blob([
b1,
f1
]);
assertEquals(b2.size, 3 * u8.length);
});
test(function blobSlice() {
const blob = new Blob([
"Deno",
"Foo"
]);
const b1 = blob.slice(0, 3, "Text/HTML");
assert(b1 instanceof Blob);
assertEquals(b1.size, 3);
assertEquals(b1.type, "text/html");
const b2 = blob.slice(-1, 3);
assertEquals(b2.size, 0);
const b3 = blob.slice(100, 3);
assertEquals(b3.size, 0);
const b4 = blob.slice(0, 10);
assertEquals(b4.size, blob.size);
});
test(function blobInvalidType() {
const blob = new Blob([
"foo"
], {
type: "\u0521"
});
assertEquals(blob.type, "");
});
test(function blobShouldNotThrowError() {
let hasThrown = false;
try {
const options1: any = {
ending: "utf8",
hasOwnProperty: "hasOwnProperty"
};
const options2 = Object.create(null);
new Blob([
"Hello World"
], options1);
new Blob([
"Hello World"
], options2);
} catch {
hasThrown = true;
}
assertEquals(hasThrown, false);
});
test(async function blobText() {
const blob = new Blob([
"Hello World"
]);
assertEquals(await blob.text(), "Hello World");
});
test(async function blobStream() {
const blob = new Blob([
"Hello World"
]);
const stream = blob.stream();
assert(stream instanceof ReadableStream);
const reader = stream.getReader();
let bytes = new Uint8Array();
const read = async (): Promise<void> =>{
const { done , value } = await reader.read();
if (!done && value) {
bytes = concat(bytes, value);
return read();
}
};
await read();
const decoder = new TextDecoder();
assertEquals(decoder.decode(bytes), "Hello World");
});
test(async function blobArrayBuffer() {
const uint = new Uint8Array([
102,
111,
111
]);
const blob = new Blob([
uint
]);
assertEquals(await blob.arrayBuffer(), uint.buffer);
});
test(function blobConstructorNameIsBlob() {
const blob = new Blob();
assertEquals(blob.constructor.name, "Blob");
});
test.ignore(function blobCustomInspectFunction() {
const blob = new Blob();
assertEquals(Deno.inspect(blob), `Blob { size: 0, type: "" }`);
assertStringIncludes(Deno.inspect(Blob.prototype), "Blob");
});
|