| Index: pkg/polymer/lib/elements/web-animations-js/test/testcases/unit-test-dom-operations.html
|
| diff --git a/pkg/polymer/lib/elements/web-animations-js/test/testcases/unit-test-dom-operations.html b/pkg/polymer/lib/elements/web-animations-js/test/testcases/unit-test-dom-operations.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1a720f2ecef87b24666d96f81965a9ccbe8bafb7
|
| --- /dev/null
|
| +++ b/pkg/polymer/lib/elements/web-animations-js/test/testcases/unit-test-dom-operations.html
|
| @@ -0,0 +1,164 @@
|
| +<!--
|
| +Copyright 2013 Google Inc. All Rights Reserved.
|
| +
|
| +Licensed under the Apache License, Version 2.0 (the "License");
|
| +you may not use this file except in compliance with the License.
|
| +You may obtain a copy of the License at
|
| +
|
| + http://www.apache.org/licenses/LICENSE-2.0
|
| +
|
| +Unless required by applicable law or agreed to in writing, software
|
| +distributed under the License is distributed on an "AS IS" BASIS,
|
| +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| +See the License for the specific language governing permissions and
|
| +limitations under the License.
|
| +-->
|
| +
|
| +<!DOCTYPE html><meta charset="UTF-8">
|
| +<body></body>
|
| +<script src="../bootstrap.js"></script>
|
| +<script>
|
| +
|
| +var body = document.querySelector('body');
|
| +var anims = [body, body, body, body, body, body, body, body, body, body].map(function(element, idx) {
|
| + return new Animation(element, { left: '100px' }, idx);
|
| +});
|
| +
|
| +function initGroup() {
|
| + return new ParGroup(anims.slice(0, 5));
|
| +}
|
| +
|
| +function toOrdering(list) {
|
| + return [].map.call(list, function(animation) { return animation.specified.duration; });
|
| +}
|
| +
|
| +function assert_child_order(group, list, message) {
|
| + assert_array_equals(toOrdering(group.children), list, message);
|
| +}
|
| +
|
| +test(function() {
|
| + var group = new ParGroup();
|
| + group.append(anims[5]);
|
| + assert_child_order(group, [5],
|
| + 'append on empty group should work');
|
| + var group = initGroup();
|
| + group.append(anims[5]);
|
| + assert_child_order(group, [0, 1, 2, 3, 4, 5],
|
| + 'append should place element 5 at end of group');
|
| + group.append(anims[6], anims[7], anims[8]);
|
| + assert_child_order(group, [0, 1, 2, 3, 4, 5, 6, 7, 8],
|
| + 'append should place elements 6, 7, and 8 at end of group');
|
| +}, 'append');
|
| +
|
| +test(function() {
|
| + var group = new ParGroup();
|
| + group.prepend(anims[5]);
|
| + assert_child_order(group, [5],
|
| + 'prepend on empty group should work');
|
| + var group = initGroup();
|
| + group.prepend(anims[5]);
|
| + assert_child_order(group, [5, 0, 1, 2, 3, 4],
|
| + 'prepend should place element 5 at beginning of group');
|
| + group.prepend(anims[6], anims[7], anims[8]);
|
| + assert_child_order(group, [6, 7, 8, 5, 0, 1, 2, 3, 4],
|
| + 'prepend should place elements 6, 7, and 8 at beginning of group');
|
| +}, 'prepend');
|
| +
|
| +test(function() {
|
| + var group = initGroup();
|
| + assert_equals(group.firstChild, anims[0],
|
| + 'first child should be element 0');
|
| + group.prepend(anims[8]);
|
| + assert_equals(group.firstChild, anims[8],
|
| + 'first child after prepend should be prepended element');
|
| +}, 'firstChild');
|
| +
|
| +test(function() {
|
| + var group = initGroup();
|
| + assert_equals(group.lastChild, anims[4],
|
| + 'last child should be element 4');
|
| + group.append(anims[8]);
|
| + assert_equals(group.lastChild, anims[8],
|
| + 'last child after append should be appended element');
|
| +}, 'lastChild');
|
| +
|
| +test(function() {
|
| + var group = initGroup();
|
| + group.children[2].before(anims[5]);
|
| + assert_child_order(group, [0, 1, 5, 2, 3, 4],
|
| + 'before should place element 5 before element 2');
|
| + anims[3].before(anims[6], anims[7], anims[8]);
|
| + assert_child_order(group, [0, 1, 5, 2, 6, 7, 8, 3, 4],
|
| + 'before should place elements 6, 7, and 8 before element 3');
|
| + group.firstChild.before(anims[9]);
|
| + assert_child_order(group, [9, 0, 1, 5, 2, 6, 7, 8, 3, 4],
|
| + 'before should place element 9 at beginning of list');
|
| +}, 'before');
|
| +
|
| +test(function() {
|
| + var group = initGroup();
|
| + group.children[2].after(anims[5]);
|
| + assert_child_order(group, [0, 1, 2, 5, 3, 4],
|
| + 'after should place element 5 after element 2');
|
| + anims[3].after(anims[6], anims[7], anims[8]);
|
| + assert_child_order(group, [0, 1, 2, 5, 3, 6, 7, 8, 4],
|
| + 'after should place elements 6, 7, and 8 after element 3');
|
| + group.lastChild.after(anims[9]);
|
| + assert_child_order(group, [0, 1, 2, 5, 3, 6, 7, 8, 4, 9],
|
| + 'after should place element 9 at end of list');
|
| +}, 'after');
|
| +
|
| +test(function() {
|
| + var group = initGroup();
|
| + group.children[2].replace(anims[5]);
|
| + assert_child_order(group, [0, 1, 5, 3, 4],
|
| + 'replace should replace element 2 with element 5');
|
| + anims[3].replace(anims[6], anims[7], anims[8]);
|
| + assert_child_order(group, [0, 1, 5, 6, 7, 8, 4],
|
| + 'replace should replace element 3 with elements 6, 7, and 8');
|
| + group.firstChild.replace(anims[9]);
|
| + assert_child_order(group, [9, 1, 5, 6, 7, 8, 4],
|
| + 'replace should replace element 0 with element 9');
|
| + group.lastChild.replace(anims[0]);
|
| + assert_child_order(group, [9, 1, 5, 6, 7, 8, 0],
|
| + 'replace should replace element 4 with element 0');
|
| +}, 'replace');
|
| +
|
| +test(function() {
|
| + var group = initGroup();
|
| + group.children[2].remove();
|
| + assert_child_order(group, [0, 1, 3, 4],
|
| + 'element 2 should be removed');
|
| + group.firstChild.remove();
|
| + assert_child_order(group, [1, 3, 4],
|
| + 'first child should be removed');
|
| + group.lastChild.remove();
|
| + assert_child_order(group, [1, 3],
|
| + 'last child should be removed');
|
| +}, 'remove');
|
| +
|
| +test(function() {
|
| + var group = initGroup();
|
| + var group2 = new ParGroup();
|
| + group2.append(group);
|
| + var group3 = new SeqGroup();
|
| + group3.append(group);
|
| + assert_throws("HierarchyRequestError",
|
| + function() {
|
| + group.append(group3);
|
| + },
|
| + 'group3 should be in hierarchy of group');
|
| + assert_throws("HierarchyRequestError",
|
| + function() {
|
| + group.append(group);
|
| + },
|
| + 'group should be in its own hierarchy');
|
| + assert_throws("HierarchyRequestError",
|
| + function() {
|
| + anims[3].replace(group);
|
| + },
|
| + 'group should be in hierarchy of element 3');
|
| +
|
| +}, 'inclusive ancestors fail');
|
| +
|
| +</script>
|
|
|