<!DOCTYPE html>
<meta charset="utf-8">
<title>idlharness test: Encoding Living Standard API</title>
<link rel="author" title="Joshua Bell" href="mailto:jsbell@google.com" />
<link rel="help" href="https://encoding.spec.whatwg.org/#api"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/WebIDLParser.js"></script>
<script src="/resources/idlharness.js"></script>

<h1>idlharness test</h1>
<p>This test validates the WebIDL included in the Encoding Living Standard.</p>

<script type="text/plain" class="untested-idl">
interface Window {};
</script>

<script type="text/plain" class="idl">
// 8.1 Interface TextDecoder

dictionary TextDecoderOptions {
  boolean fatal = false;
  boolean ignoreBOM = false;
};

dictionary TextDecodeOptions {
  boolean stream = false;
};

[Constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options),
 Exposed=Window,Worker]
interface TextDecoder {
  readonly attribute DOMString encoding;
  readonly attribute boolean fatal;
  readonly attribute boolean ignoreBOM;
  USVString decode(optional BufferSource input, optional TextDecodeOptions options);
};

// 8.2 Interface TextDecoder

[Constructor(optional DOMString utfLabel = "utf-8"),
 Exposed=Window,Worker]
interface TextEncoder {
  readonly attribute DOMString encoding;
  [NewObject] Uint8Array encode(optional USVString input = "");
};
</script>

<script>
function select(selector) {
  return [].slice.call(document.querySelectorAll(selector))
    .map(function(e) { return e.textContent; })
    .join('\n\n');
}

var idl = select('.idl')
var untested = select('.untested-idl');
var idl_array = new IdlArray();
idl_array.add_untested_idls(untested);
idl_array.add_idls(idl);
idl_array.add_objects({
  TextEncoder: ['new TextEncoder()'],
  TextDecoder: ['new TextDecoder()']
});
idl_array.test();
</script>
