<!DOCTYPE html>
<html>
  <head>
    <title>
      AudioDestinationNode
    </title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>
  <body>
    <script>
      function assert_doesnt_throw(f, desc) {
        try {
          f();
        } catch (e) {
          assert_true(false, desc);
          return;
        }
        assert_true(true, desc);
      }

      test(function() {
          var ac = new AudioContext();

          assert_equals(ac.destination.channelCount, 2,
              "A DestinationNode should have two channels by default");

          assert_greater_than_equal(ac.destination.maxChannelCount, 2,
            "maxChannelCount should be >= 2");

          assert_throws_dom("IndexSizeError", function() {
              ac.destination.channelCount = ac.destination.maxChannelCount + 1
              }, `Setting the channelCount to something greater than
                  the maxChannelCount should throw IndexSizeError`);

          assert_throws_dom("NotSupportedError", function() {
              ac.destination.channelCount = 0;
          }, "Setting the channelCount to 0 should throw NotSupportedError");

          assert_doesnt_throw(function() {
              ac.destination.channelCount = ac.destination.maxChannelCount;
          }, "Setting the channelCount to maxChannelCount should not throw");

          assert_doesnt_throw(function() {
              ac.destination.channelCount = 1;
          }, "Setting the channelCount to 1 should not throw");
      });

    </script>
  </body>
</html>
