mirror of
https://github.com/Polymer/polymer.git
synced 2025-02-25 18:55:30 -06:00
147 lines
5.0 KiB
HTML
147 lines
5.0 KiB
HTML
<!doctype html>
|
|
<!--
|
|
@license
|
|
Copyright (c) 2014 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>
|
|
|
|
<link rel="import" href="../../polymer-micro.html">
|
|
<link rel="import" href="micro-elements.html">
|
|
|
|
</head>
|
|
<body>
|
|
|
|
<x-trivial></x-trivial>
|
|
|
|
<x-trivial2></x-trivial2>
|
|
|
|
<input is="x-extension">
|
|
|
|
<script>
|
|
|
|
suite('polymer-micro', function() {
|
|
|
|
test('polymer-micro element created', function() {
|
|
assert.equal(document.querySelector('x-trivial').textContent, 'x-trivial');
|
|
});
|
|
|
|
test('polymer-micro type extension element created', function() {
|
|
assert.equal(document.querySelector('input').value, 'x-extension');
|
|
});
|
|
|
|
});
|
|
|
|
suite('type checking & constructor', function() {
|
|
|
|
test('Polymer.isInstance for non-instance', function() {
|
|
var el = document.createElement('div');
|
|
assert.isTrue(Polymer.instanceof(el, HTMLElement));
|
|
assert.isTrue(Polymer.instanceof(el, HTMLDivElement));
|
|
assert.isFalse(Polymer.isInstance(el));
|
|
});
|
|
|
|
test('document.createElement', function() {
|
|
var MyElement = Polymer({is: 'my-basic'});
|
|
var el = document.createElement('my-basic');
|
|
assert.isTrue(Polymer.instanceof(el, HTMLElement));
|
|
assert.isTrue(Polymer.instanceof(el, MyElement));
|
|
assert.isTrue(Polymer.isInstance(el));
|
|
});
|
|
|
|
test('normal constructor', function() {
|
|
var MyElement = Polymer({is: 'my-element'});
|
|
var el = new MyElement();
|
|
document.body.appendChild(el);
|
|
if (Object.__proto__) {
|
|
// instanceof Constructor only supported where proto swizzling is possible
|
|
assert.instanceOf(el, MyElement, 'Instance of MyElement');
|
|
}
|
|
assert.instanceOf(el, HTMLElement, 'Instance of HTMLElement');
|
|
assert.isTrue(Polymer.instanceof(el, HTMLElement));
|
|
assert.isTrue(Polymer.instanceof(el, MyElement));
|
|
assert.isTrue(Polymer.isInstance(el));
|
|
});
|
|
|
|
test('type-extension constructor', function() {
|
|
var MyInput = Polymer({is: 'my-input', extends: 'input'});
|
|
var el = new MyInput();
|
|
document.body.appendChild(el);
|
|
if (Object.__proto__) {
|
|
// instanceof Constructor only supported where proto swizzling is possible
|
|
assert.instanceOf(el, MyInput, 'Instance of MyInput');
|
|
assert.instanceOf(el, HTMLElement, 'Instance of HTMLInputElement');
|
|
}
|
|
assert.isTrue(Polymer.instanceof(el, HTMLInputElement));
|
|
assert.isTrue(Polymer.instanceof(el, HTMLElement));
|
|
assert.isTrue(Polymer.instanceof(el, MyInput));
|
|
assert.isTrue(Polymer.isInstance(el));
|
|
});
|
|
|
|
test('custom constructor', function() {
|
|
var MyElement2 = Polymer({
|
|
is: 'my-element2',
|
|
factoryImpl: function(title){
|
|
this.title = title;
|
|
}
|
|
});
|
|
var el = new MyElement2('my title');
|
|
document.body.appendChild(el);
|
|
if (Object.__proto__) {
|
|
// instanceof Constructor only supported where proto swizzling is possible
|
|
assert.instanceOf(el, MyElement2, 'Instance of MyElement');
|
|
assert.instanceOf(el, HTMLElement, 'Instance of HTMLElement');
|
|
}
|
|
assert.equal(el.title, 'my title', 'Argument passed to constructor');
|
|
assert.isTrue(Polymer.instanceof(el, HTMLElement));
|
|
assert.isTrue(Polymer.instanceof(el, MyElement2));
|
|
assert.isTrue(Polymer.isInstance(el));
|
|
});
|
|
|
|
test('imperative dom-module', function() {
|
|
var d = document.createElement('dom-module');
|
|
var c = document.createElement('div');
|
|
d.appendChild(c);
|
|
d.register('my-module');
|
|
var lookup = document.createElement('dom-module');
|
|
assert.equal(lookup.import('my-module', 'div'), c);
|
|
});
|
|
|
|
test('mixed-case is (element type) forced to lowercase', function() {
|
|
var a = document.createElement('x-mixed-case');
|
|
assert.equal(a.is, 'x-mixed-case');
|
|
var b = document.createElement('button', 'x-mixed-case-button');
|
|
assert.equal(b.is, 'x-mixed-case-button');
|
|
assert.equal(b.getAttribute('is'), 'x-mixed-case-button');
|
|
});
|
|
|
|
test('input to Polymer is a `class`', function() {
|
|
var _class = function() {};
|
|
_class.prototype = {
|
|
is: 'x-class-as-argument-test'
|
|
};
|
|
Polymer(_class);
|
|
var a = document.createElement('x-class-as-argument-test');
|
|
assert.equal(a.is, 'x-class-as-argument-test');
|
|
});
|
|
|
|
test('input to Polymer is falsey', function() {
|
|
var a = document.createElement('falsey-polymer-arg');
|
|
assert.equal(a.is, 'falsey-polymer-arg');
|
|
});
|
|
});
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|