Skip to content
This repository was archived by the owner on Mar 16, 2019. It is now read-only.

Commit cb859f9

Browse files
committed
Add W3C Blob.slice test cases #89
1 parent 208fb2e commit cb859f9

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed

test/test-blob.js

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,114 @@ describe('create blob using FormData', (report, done) => {
154154
done()
155155
})
156156
})
157+
158+
// since 0.9.2
159+
// test case from :
160+
// https://github.com/w3c/web-platform-tests/blob/master/FileAPI/blob/Blob-slice.html
161+
describe('#89 Blob.slice test', (report, done) => {
162+
163+
let blob1, blob2
164+
let count = 0
165+
let testData
166+
167+
Blob
168+
.build(["squiggle"])
169+
.then((b) => {
170+
blob1 = b
171+
return Blob.build(["steak"], {type: "content/type"})
172+
})
173+
.then((b) => {
174+
blob2 = b
175+
setTestData()
176+
startTest()
177+
})
178+
179+
function setTestData() {
180+
testData = [
181+
[
182+
["PASSSTRING"],
183+
[{start: -6, contents: "STRING"},
184+
{start: -12, contents: "PASSSTRING"},
185+
{start: 4, contents: "STRING"},
186+
{start: 12, contents: ""},
187+
{start: 0, end: -6, contents: "PASS"},
188+
{start: 0, end: -12, contents: ""},
189+
{start: 0, end: 4, contents: "PASS"},
190+
{start: 0, end: 12, contents: "PASSSTRING"},
191+
{start: 7, end: 4, contents: ""}]
192+
],
193+
// Test 3 strings
194+
[
195+
["foo", "bar", "baz"],
196+
[{start: 0, end: 9, contents: "foobarbaz"},
197+
{start: 0, end: 3, contents: "foo"},
198+
{start: 3, end: 9, contents: "barbaz"},
199+
{start: 6, end: 9, contents: "baz"},
200+
{start: 6, end: 12, contents: "baz"},
201+
{start: 0, end: 9, contents: "foobarbaz"},
202+
{start: 0, end: 11, contents: "foobarbaz"},
203+
{start: 10, end: 15, contents: ""}]
204+
],
205+
// Test string, Blob, string
206+
[
207+
["foo", blob1, "baz"],
208+
[{start: 0, end: 3, contents: "foo"},
209+
{start: 3, end: 11, contents: "squiggle"},
210+
{start: 2, end: 4, contents: "os"},
211+
{start: 10, end: 12, contents: "eb"}]
212+
],
213+
// Test blob, string, blob
214+
[
215+
[blob1, "foo", blob1],
216+
[{start: 0, end: 8, contents: "squiggle"},
217+
{start: 7, end: 9, contents: "ef"},
218+
{start: 10, end: 12, contents: "os"},
219+
{start: 1, end: 4, contents: "qui"},
220+
{start: 12, end: 15, contents: "qui"},
221+
{start: 40, end: 60, contents: ""}]
222+
],
223+
// Test blobs all the way down
224+
[
225+
[blob2, blob1, blob2],
226+
[{start: 0, end: 5, contents: "steak"},
227+
{start: 5, end: 13, contents: "squiggle"},
228+
{start: 13, end: 18, contents: "steak"},
229+
{start: 1, end: 3, contents: "te"},
230+
{start: 6, end: 10, contents: "quig"}]
231+
]
232+
]
233+
}
234+
235+
function startTest() {
236+
Promise.all(testData.map(assert)).then(done)
237+
}
238+
239+
function assert(d):Promise {
240+
let content = d[0]
241+
let assertions = d[1]
242+
console.log('create blob content = ', content)
243+
Blob.build(content).then((b) => {
244+
for(let i in assertions) {
245+
let args = assertions[i]
246+
let target = b.slice(args.start, args.end)
247+
target.onCreated((b2) => {
248+
let raw = null
249+
fs.readFile(b.blobPath, 'utf8').then((data) => {
250+
raw = data
251+
fs.readFile(b2.blobPath, 'utf8')
252+
.then(function(actual){
253+
console.log('---')
254+
console.log('raw',data)
255+
console.log('expect', this.contents)
256+
console.log('actual', actual)
257+
report(<Assert key={`assertion ${++count}`} expect={this.contents} actual={actual}/>)
258+
}.bind(args))
259+
})
260+
261+
})
262+
}
263+
})
264+
265+
}
266+
267+
})

0 commit comments

Comments
 (0)