<!DOCTYPE html>
<title>Encoding API: Streaming decode</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/encodings.js"></script>
<script>

var string = '\\x00123ABCabc\\x80\\xFF\\u0100\\u1000\\uFFFD\\uD800\\uDC00\\uDBFF\\uDFFF';

utf_encodings.forEach(function (encoding) {
    for (var len = 1; len <= 5; ++len) {
        test(function() {
            var encoded = new TextEncoder(encoding).encode(string);

            var out = '';
            var decoder = new TextDecoder(encoding);
            for (var i = 0; i < encoded.length; i += len) {
                var sub = [];
                for (var j = i; j < encoded.length && j < i + len; ++j)
                    sub.push(encoded[j]);
                out += decoder.decode(new Uint8Array(sub), {stream: true});
            }
            out += decoder.decode();
            assert_equals(out, string);
        }, 'Streaming decode: ' + encoding + ', ' + len + ' byte window');
    }
});

</script>
