<!doctype html> <!– Copyright © 2015 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at polymer.github.io/LICENSE.txt The complete set of authors may be found at polymer.github.io/AUTHORS.txt The complete set of contributors may be found at polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at polymer.github.io/PATENTS.txt –>

<html>

<head>

  <title>iron-media-query-basic</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
  <script src="../../web-component-tester/browser.js"></script>
  <link rel="import" href="../iron-media-query.html">

</head>
<body>

  <test-fixture id="basic">
    <template>
      <iron-media-query></iron-media-query>
    </template>
  </test-fixture>

  <script>

    suite('basic', function() {
      var mq;

      suite('set query with different values', function() {
        setup(function () {
          mq = fixture('basic');
        });

        test('small min-width value', function() {
          mq.query = '(min-width: 1px)';
          assert.equal(mq.queryMatches, true);
        });

        test('large min-width value', function() {
          mq.query = '(min-width: 10000px)';
          assert.equal(mq.queryMatches, false);
        });

        test('small max-width value', function() {
          mq.query = '(max-width: 1px)';
          assert.equal(mq.queryMatches, false);
        });

        test('large max-width value', function() {
          mq.query = '(max-width: 10000px)';
          assert.equal(mq.queryMatches, true);
        });

        test('automatically wrap with parens', function() {
          mq.query = 'min-width: 1px';
          assert.equal(mq.queryMatches, true);
        });

        suite('`full` attribute', function() {
          test('media features without wrapping parentheses no longer match', function() {
            mq.full = true;
            mq.query = 'min-width: 1px';
            assert.equal(mq.queryMatches, false);
          });

          test('media queries with both types and features match', function() {
            mq.full = true;
            mq.query = 'all and (min-width: 1px)';
            assert.equal(mq.queryMatches, true);
          });
        });

        suite('query does not activate on empty string or null', function() {

          test('empty string', function() {
            mq.query = '';
            assert.notOk(mq._mq);
          });

          test('null', function() {
            mq.query = null;
            assert.notOk(mq._mq);
          });

        });

        test('media query destroys on detach', function() {
          mq.query = '(max-width: 800px)';
          mq.parentNode.removeChild(mq);
          Polymer.dom.flush();
          assert.notOk(mq._mq);
        });

        test('media query re-enables on attach', function() {
          mq.query = '(max-width: 800px)';
          var parent = mq.parentNode;
          parent.removeChild(mq);
          Polymer.dom.flush();
          parent.appendChild(mq);
          Polymer.dom.flush();
          assert.ok(mq._mq);
        });

      });

    });

  </script>

</body>

</html>