<!DOCTYPE html>
<script src='../../resources/testharness.js'></script>
<script src='../../resources/testharnessreport.js'></script>
<script src='resources/streams-utils.js'></script>
<script>
// This is updated till https://github.com/whatwg/streams/commit/4ba861e6f60c248060811830e11271c84b439cc3

var test1 = async_test('Piping through a duck-typed pass-through transform stream works');
test1.step(function() {
    var readableEnd = sequentialReadableStream(5).pipeThrough(duckTypedPassThroughTransform());

    readableStreamToArray(readableEnd).then(function(chunks) {
        assert_array_equals(chunks, [1, 2, 3, 4, 5]);
        test1.done();
    }).catch(function(e) { assert_unreached(e); });
});

var test2 = async_test('Piping through an identity transform stream will close the destination when the source closes');
test2.step(function() {
    var rs = new ReadableStream({
        start: function(c) {
            c.enqueue('a');
            c.enqueue('b');
            c.enqueue('c');
            c.close();
        }
    });

    var ts = new TransformStream({
        transform: function(chunk, enqueue, done) {
            enqueue(chunk);
            done();
        }
    });

    var ws = new WritableStream();

    rs.pipeThrough(ts).pipeTo(ws).then(function() {
        assert_equals(ws.state, 'closed', 'the writable stream was closed');
        test2.done();
    }).catch(function(e) { assert_unreached(e); });
});
</script>
