@@ -36,6 +36,41 @@ test('Blob ctor parts', async t => {
36
36
t . is ( await blob . text ( ) , 'abcdefg[object Object]foo=' ) ;
37
37
} ) ;
38
38
39
+ test ( "Blob ctor threats an object with @@iterator as a sequence" , async t => {
40
+ const blob = new Blob ( { [ Symbol . iterator ] : Array . prototype [ Symbol . iterator ] } )
41
+
42
+ t . is ( blob . size , 0 )
43
+ t . is ( await blob . text ( ) , "" )
44
+ } )
45
+
46
+ test ( "Blob ctor reads blob parts from object with @@iterator" , async t => {
47
+ const input = [ "one" , "two" , "three" ]
48
+ const expected = input . join ( "" )
49
+
50
+ const blob = new Blob ( {
51
+ * [ Symbol . iterator ] ( ) {
52
+ yield * input
53
+ }
54
+ } )
55
+
56
+ t . is ( blob . size , new TextEncoder ( ) . encode ( expected ) . byteLength )
57
+ t . is ( await blob . text ( ) , expected )
58
+ } )
59
+
60
+ test ( "Blob ctor threats a string as a sequence" , async t => {
61
+ const expected = "abc"
62
+ const blob = new Blob ( expected )
63
+
64
+ t . is ( await blob . text ( ) , expected )
65
+ } )
66
+
67
+ test ( "Blob ctor threats Uint8Array as a sequence" , async t => {
68
+ const input = [ 1 , 2 , 3 ]
69
+ const blob = new Blob ( new Uint8Array ( input ) )
70
+
71
+ t . is ( await blob . text ( ) , input . join ( "" ) )
72
+ } )
73
+
39
74
test ( 'Blob size' , t => {
40
75
const data = 'a=1' ;
41
76
const blob = new Blob ( [ data ] ) ;
0 commit comments