diff options
Diffstat (limited to 'catapult/third_party/polymer/components/paper-behaviors/test')
8 files changed, 759 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/paper-behaviors/test/index.html b/catapult/third_party/polymer/components/paper-behaviors/test/index.html new file mode 100644 index 00000000..693054c0 --- /dev/null +++ b/catapult/third_party/polymer/components/paper-behaviors/test/index.html @@ -0,0 +1,29 @@ +<!DOCTYPE html><!-- +@license +Copyright (c) 2015 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://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 http://polymer.github.io/PATENTS.txt +--><html><head> + <meta charset="utf-8"> + <script src="../../webcomponentsjs/webcomponents-lite.js"></script> + <script src="../../web-component-tester/browser.js"></script> +</head> +<body> + <script> + WCT.loadSuites([ + 'paper-button-behavior.html', + 'paper-radio-button-behavior.html', + 'paper-checked-element-behavior.html', + 'paper-ripple-behavior.html', + 'paper-button-behavior.html?dom=shadow', + 'paper-radio-button-behavior.html?dom=shadow', + 'paper-checked-element-behavior.html?dom=shadow', + 'paper-ripple-behavior.html?dom=shadow' + ]); + </script> + + +</body></html> diff --git a/catapult/third_party/polymer/components/paper-behaviors/test/paper-button-behavior.html b/catapult/third_party/polymer/components/paper-behaviors/test/paper-button-behavior.html new file mode 100644 index 00000000..ff859252 --- /dev/null +++ b/catapult/third_party/polymer/components/paper-behaviors/test/paper-button-behavior.html @@ -0,0 +1,113 @@ +<!doctype html> +<!-- +@license +Copyright (c) 2015 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://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 http://polymer.github.io/PATENTS.txt +--> + +<html> +<head> + <title>paper-button-behavior</title> + + <script src="../../webcomponentsjs/webcomponents-lite.js"></script> + <script src="../../web-component-tester/browser.js"></script> + <script src="../../test-fixture/test-fixture-mocha.js"></script> + <script src="../../iron-test-helpers/mock-interactions.js"></script> + + <link rel="import" href="../../polymer/polymer.html"> + <link rel="import" href="../../test-fixture/test-fixture.html"> + <link rel="import" href="test-button.html"> +</head> +<body> + + <test-fixture id="basic"> + <template> + <test-button></test-button> + </template> + </test-fixture> + + <script> + suite('basic', function() { + var button; + + setup(function() { + button = fixture('basic'); + }); + + test('normal (no states)', function() { + assert.equal(button.elevation, 1); + }); + + test('set disabled property', function() { + button.disabled = true; + assert.equal(button.elevation, 0); + }); + + test('pressed and released', function() { + MockInteractions.down(button); + assert.equal(button.elevation, 4); + MockInteractions.up(button); + assert.equal(button.elevation, 1); + assert.ok(button.hasRipple()); + }); + + suite('a button with toggles', function() { + setup(function() { + button.toggles = true; + }); + + test('activated by tap', function(done) { + MockInteractions.downAndUp(button, function() { + try { + assert.equal(button.elevation, 4); + assert.ok(button.hasRipple()); + done(); + } catch (e) { + done(e); + } + }); + }); + }); + + test('receives focused', function() { + MockInteractions.focus(button); + assert.equal(button.elevation, 3); + assert.ok(button.hasRipple()); + }); + + test('space key', function(done) { + const SPACE_KEY_CODE = 32; + var ripple; + MockInteractions.focus(button); + + assert.ok(button.hasRipple()); + + ripple = button.getRipple(); + MockInteractions.keyDownOn(button, SPACE_KEY_CODE); + + assert.equal(ripple.ripples.length, 1); + + MockInteractions.keyDownOn(button, SPACE_KEY_CODE); + + assert.equal(ripple.ripples.length, 1); + + MockInteractions.keyUpOn(button, SPACE_KEY_CODE); + + var transitionEndCalled = false; + ripple.addEventListener('transitionend', function() { + if (!transitionEndCalled) { + transitionEndCalled = true; + assert.equal(ripple.ripples.length, 0); + done(); + } + }); + }); + }); + </script> + +</body> +</html> diff --git a/catapult/third_party/polymer/components/paper-behaviors/test/paper-checked-element-behavior.html b/catapult/third_party/polymer/components/paper-behaviors/test/paper-checked-element-behavior.html new file mode 100644 index 00000000..363cf4c7 --- /dev/null +++ b/catapult/third_party/polymer/components/paper-behaviors/test/paper-checked-element-behavior.html @@ -0,0 +1,94 @@ +<!doctype html> +<!-- +@license +Copyright (c) 2015 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://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 http://polymer.github.io/PATENTS.txt +--> + +<html> +<head> + <title>paper-checked-element-behavior</title> + + <script src="../../webcomponentsjs/webcomponents-lite.js"></script> + <script src="../../web-component-tester/browser.js"></script> + <script src="../../test-fixture/test-fixture-mocha.js"></script> + <script src="../../iron-test-helpers/mock-interactions.js"></script> + + <link rel="import" href="../../polymer/polymer.html"> + <link rel="import" href="../../test-fixture/test-fixture.html"> + <link rel="import" href="../paper-checked-element-behavior.html"> +</head> +<body> + + <dom-module id="test-checked"> + <template> + </template> + <script> + HTMLImports.whenReady(function() { + Polymer({ + is: 'test-checked', + behaviors: [ + Polymer.PaperCheckedElementBehavior + ] + }); + }); + </script> + </dom-module> + + <test-fixture id="basic"> + <template> + <test-checked></test-checked> + </template> + </test-fixture> + + <script> + suite('PaperCheckedElementBehavior', function() { + var checked; + + setup(function() { + checked = fixture('basic'); + }); + + test('element checked when tapped to check', function() { + MockInteractions.tap(checked); + assert.isTrue(checked.checked); + }); + + test('element checked when active', function() { + checked.active = true; + assert.isTrue(checked.checked); + }); + + test('element not checked when disabled and made active', function() { + checked.disabled = true; + checked.active = true; + assert.isFalse(checked.checked); + }); + + test('element not checked when disabled and tapped', function() { + checked.disabled = true; + MockInteractions.tap(checked); + assert.isFalse(checked.checked); + }); + + test('element ripple has checked attribute when element tapped to check', function() { + MockInteractions.tap(checked); + assert.isTrue(checked.hasRipple()); + assert.isTrue(checked.getRipple().hasAttribute('checked')); + }); + + test('element ripple does not have checked attribute when element tapped to uncheck', function() { + MockInteractions.tap(checked); + MockInteractions.tap(checked); + assert.isFalse(checked.getRipple().hasAttribute('checked')); + }); + + }); + </script> + +</body> +</html> diff --git a/catapult/third_party/polymer/components/paper-behaviors/test/paper-radio-button-behavior.html b/catapult/third_party/polymer/components/paper-behaviors/test/paper-radio-button-behavior.html new file mode 100644 index 00000000..0418057d --- /dev/null +++ b/catapult/third_party/polymer/components/paper-behaviors/test/paper-radio-button-behavior.html @@ -0,0 +1,58 @@ +<!doctype html> +<!-- +@license +Copyright (c) 2015 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://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 http://polymer.github.io/PATENTS.txt +--> + +<html> +<head> + <title>paper-radio-button-behavior</title> + + <script src="../../webcomponentsjs/webcomponents-lite.js"></script> + <script src="../../web-component-tester/browser.js"></script> + <script src="../../test-fixture/test-fixture-mocha.js"></script> + <script src="../../iron-test-helpers/mock-interactions.js"></script> + + <link rel="import" href="../../polymer/polymer.html"> + <link rel="import" href="../../test-fixture/test-fixture.html"> + <link rel="import" href="test-radio-button.html"> +</head> +<body> + + <test-fixture id="basic"> + <template> + <test-radio-button></test-radio-button> + </template> + </test-fixture> + + <script> + suite('basic', function() { + var button; + + setup(function() { + button = fixture('basic'); + MockInteractions.blur(button); + }); + + test('normal (no states)', function() { + assert.isFalse(button.focused); + assert.isFalse(button.hasRipple()); + }); + + test('receives focus', function() { + MockInteractions.focus(button); + + assert.isTrue(button.focused); + assert.isTrue(button.hasRipple()); + }); + + }); + </script> + +</body> +</html> diff --git a/catapult/third_party/polymer/components/paper-behaviors/test/paper-ripple-behavior.html b/catapult/third_party/polymer/components/paper-behaviors/test/paper-ripple-behavior.html new file mode 100644 index 00000000..9daf17a4 --- /dev/null +++ b/catapult/third_party/polymer/components/paper-behaviors/test/paper-ripple-behavior.html @@ -0,0 +1,335 @@ +<!doctype html> +<!-- +@license +Copyright (c) 2015 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://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 http://polymer.github.io/PATENTS.txt +--> + +<html> +<head> + <title>paper-ripple-behavior</title> + + <script src="../../webcomponentsjs/webcomponents-lite.js"></script> + <script src="../../web-component-tester/browser.js"></script> + <script src="../../iron-test-helpers/mock-interactions.js"></script> + + <link rel="import" href="../../polymer/polymer.html"> + <link rel="import" href="../../iron-behaviors/iron-button-state.html"> + <link rel="import" href="../paper-ripple-behavior.html"> + <link rel="import" href="shadowed-ripple.html"> +</head> +<body> + + <dom-module id="test-ripple"> + <template> + </template> + <script> + HTMLImports.whenReady(function() { + Polymer({ + is: 'test-ripple', + behaviors: [ + Polymer.IronButtonState, + Polymer.IronControlState, + Polymer.PaperRippleBehavior + ] + }); + }); + </script> + </dom-module> + + <test-fixture id="basic"> + <template> + <test-ripple></test-ripple> + </template> + </test-fixture> + + <test-fixture id="ShadowBasic"> + <template> + <sd-ripple></sd-ripple> + </template> + </test-fixture> + + <test-fixture id="ShadowText"> + <template> + <sd-ripple>Howdy!</sd-ripple> + </template> + </test-fixture> + + <test-fixture id="ShadowElement"> + <template> + <sd-ripple> + <div id="source">source!</div> + </sd-ripple> + </template> + </test-fixture> + + <script> + suite('PaperRippleBehavior', function() { + var ripple; + + setup(function() { + ripple = fixture('basic'); + }); + + test('no ripple at startup', function() { + assert.isFalse(ripple.hasRipple()); + }); + + test('calling getRipple returns ripple', function() { + assert.ok(ripple.getRipple()); + }); + + test('focus generates ripple', function() { + MockInteractions.focus(ripple); + assert.ok(ripple.hasRipple()); + }); + + test('down generates ripple', function() { + MockInteractions.down(ripple); + assert.ok(ripple.hasRipple()); + MockInteractions.up(ripple); + }); + + suite('Correct Targeting', function() { + + function assertInteractionCausesRipple(host, node, expected, msg) { + var ripple = host.getRipple(); + Polymer.dom.flush(); + MockInteractions.down(node); + assert.equal(ripple.ripples.length > 0, expected, msg); + MockInteractions.up(node); + } + + function assertInteractionAtLocationCausesRipple(host, node, location, expected, msg) { + var ripple = host.getRipple(); + Polymer.dom.flush(); + MockInteractions.down(node, location); + assert.equal(ripple.ripples.length > 0, expected, msg); + MockInteractions.up(node); + } + + suite('basic', function() { + suite('container = host', function() { + + setup(function() { + ripple = fixture('ShadowBasic'); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, true, 'ripple'); + }); + test('tap #wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + test('tap #separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + }); + + suite('container = wrapper', function() { + + setup(function() { + ripple = fixture('ShadowBasic'); + ripple._rippleContainer = ripple.$.wrapper; + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap #wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + + test('tap #separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, false, '#separate') + }); + }); + + suite('container = separate', function() { + + setup(function() { + ripple = fixture('ShadowBasic'); + ripple._rippleContainer = ripple.$.separate; + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, false, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + }); + }); + + suite('distributed text', function() { + var textLocation; + + function getTextLocation(ripple) { + // build a Range to get the BCR of a given text node + var r = document.createRange(); + r.selectNode(Polymer.dom(ripple.$.content).getDistributedNodes()[0]); + return MockInteractions.middleOfNode(r); + } + + suite('container = host', function() { + setup(function() { + ripple = fixture('ShadowText'); + textLocation = getTextLocation(ripple); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, true, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + + test('tap text', function() { + assertInteractionAtLocationCausesRipple(ripple, ripple.$.wrapper, textLocation, true, 'text'); + }); + }); + + suite('container = wrapper', function() { + setup(function() { + ripple = fixture('ShadowText'); + ripple._rippleContainer = ripple.$.wrapper; + textLocation = getTextLocation(ripple); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, false, '#separate') + }); + + test('tap text', function() { + assertInteractionAtLocationCausesRipple(ripple, ripple.$.wrapper, textLocation, true, 'text'); + }); + }); + + suite('container = separate', function() { + setup(function() { + ripple = fixture('ShadowText'); + ripple._rippleContainer = ripple.$.separate; + textLocation = getTextLocation(ripple); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, false, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + + test('tap text', function() { + assertInteractionAtLocationCausesRipple(ripple, ripple.$.wrapper, textLocation, false, 'text'); + }); + }); + }); + + suite('distributed element', function() { + var source; + + suite('container = host', function() { + setup(function() { + ripple = fixture('ShadowElement'); + source = Polymer.dom(ripple).querySelector('#source'); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, true, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + + test('tap source', function() { + assertInteractionCausesRipple(ripple, source, true, '#source'); + }); + }); + + suite('container = wrapper', function() { + setup(function() { + ripple = fixture('ShadowElement'); + ripple._rippleContainer = ripple.$.wrapper; + source = Polymer.dom(ripple).querySelector('#source'); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, false, '#separate') + }); + + test('tap source', function() { + assertInteractionCausesRipple(ripple, source, true, '#source'); + }); + }); + + suite('container = separate', function() { + setup(function() { + ripple = fixture('ShadowElement'); + ripple._rippleContainer = ripple.$.separate; + source = Polymer.dom(ripple).querySelector('#source'); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, false, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + + test('tap source', function() { + assertInteractionCausesRipple(ripple, source, false, '#source'); + }); + }); + }); + }); + }); + </script> + +</body> +</html> diff --git a/catapult/third_party/polymer/components/paper-behaviors/test/shadowed-ripple.html b/catapult/third_party/polymer/components/paper-behaviors/test/shadowed-ripple.html new file mode 100644 index 00000000..1ebad13e --- /dev/null +++ b/catapult/third_party/polymer/components/paper-behaviors/test/shadowed-ripple.html @@ -0,0 +1,55 @@ +<!DOCTYPE html> +<!-- +@license +Copyright (c) 2015 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://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 http://polymer.github.io/PATENTS.txt +--> +<link rel="import" href="../../polymer/polymer.html"> +<link rel="import" href="../../iron-behaviors/iron-button-state.html"> +<link rel="import" href="../paper-ripple-behavior.html"> +<dom-module id="sd-ripple"> + <template> + <style> + :host { + display: block; + width: 200px; + } + #separate, #wrapper { + height: 50px; + } + #separate { + background: blue; + } + #wrapper { + background: red; + } + #wrapper > ::content #source { + height: 25px; + width: 50px; + background: green; + } + </style> + <div id="separate"> + <div id="target"> + Internal Text Node + </div> + </div> + <div id="wrapper"> + <content id="content"></content> + </div> + </template> + <script> + Polymer({ + is: 'sd-ripple', + behaviors: [ + Polymer.IronButtonState, + Polymer.IronControlState, + Polymer.PaperRippleBehavior + ] + }); + </script> +</dom-module> diff --git a/catapult/third_party/polymer/components/paper-behaviors/test/test-button.html b/catapult/third_party/polymer/components/paper-behaviors/test/test-button.html new file mode 100644 index 00000000..3bbf356e --- /dev/null +++ b/catapult/third_party/polymer/components/paper-behaviors/test/test-button.html @@ -0,0 +1,34 @@ +<!-- +@license +Copyright (c) 2015 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://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 http://polymer.github.io/PATENTS.txt +--> + +<link rel="import" href="../../polymer/polymer.html"> +<link rel="import" href="../paper-button-behavior.html"> + +<dom-module id="test-button"> + + <template> + <content></content> + </template> + + <script> + + Polymer({ + + is: 'test-button', + + behaviors: [ + Polymer.PaperButtonBehavior + ] + + }); + + </script> + +</dom-module> diff --git a/catapult/third_party/polymer/components/paper-behaviors/test/test-radio-button.html b/catapult/third_party/polymer/components/paper-behaviors/test/test-radio-button.html new file mode 100644 index 00000000..945a08e1 --- /dev/null +++ b/catapult/third_party/polymer/components/paper-behaviors/test/test-radio-button.html @@ -0,0 +1,41 @@ +<!-- +@license +Copyright (c) 2015 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://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 http://polymer.github.io/PATENTS.txt +--> + +<link rel="import" href="../../polymer/polymer.html"> +<link rel="import" href="../paper-checked-element-behavior.html"> +<link rel="import" href="../../paper-ripple/paper-ripple.html"> + +<dom-module id="test-radio-button"> + <template> + <style> + :host #ink { + position: absolute; + top: -16px; + left: -16px; + width: 48px; + height: 48px; + } + </style> + + <div id="container"> + <paper-ripple id="ink" class="circle" center></paper-ripple> + </div> + </template> +</dom-module> + +<script> + Polymer({ + is: 'test-radio-button', + + behaviors: [ + Polymer.PaperCheckedElementBehavior + ] + }); +</script> |