
PASS By default, byobRequest should be undefined 
PASS byobRequest.view length should be equal to autoAllocateChunkSize 
PASS Calling respond() with a this object different from ReadableStreamBYOBRequest should throw a TypeError 
PASS Calling respond() with a negative bytesWritten value should throw a RangeError 
PASS Calling respond() with a bytesWritten value which is not a number should throw a RangeError 
PASS Calling respond() with a positive infinity bytesWritten value should throw a RangeError 
PASS Calling respond() with a bytesWritten value different from 0 when stream is closed should throw a TypeError 
PASS Calling respond() with a bytesWritten value of 0 when stream is closed should succeed 
PASS Calling respond() with a bytesWritten value greater than autoAllocateChunkSize should fail 
PASS Calling respond() with a bytesWritten value lower than autoAllocateChunkSize should succeed 
PASS Calling respondWithNewView() with a this object different from ReadableStreamBYOBRequest should throw a TypeError 
PASS Calling respondWithNewView() with an argument that is not an object should throw a TypeError 
PASS Calling respondWithNewView() with an argument that is not an ArrayBufferView should throw a TypeError 
PASS When using autoAllocateChunkSize, calling respondWithNewView() should succeed if view.byteLength is equal to autoAllocateChunkSize 
PASS When using autoAllocateChunkSize, calling respondWithNewView() should throw a RangeError if view.byteOffset is different from 0 
PASS When using autoAllocateChunkSize, calling respondWithNewView() should throw a RangeError if view.byteLength is different from autoAllocateChunkSize 

