|  | <!DOCTYPE html> | 
|  | <meta charset=utf-8> | 
|  | <title>AnimationNode parent attribute tests</title> | 
|  | <meta name="assert" content="The parent animation group of this animation node or null if this animation node does not have a parent animation group"> | 
|  | <link rel="help" href="http://w3c.github.io/web-animations/#dom-animationnode-parent"> | 
|  | <link rel="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru"> | 
|  | <link rel="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru"> | 
|  | <script src="/resources/testharness.js"></script> | 
|  | <script src="/resources/testharnessreport.js"></script> | 
|  | <script src="../testcommon.js"></script> | 
|  | <link rel="stylesheet" href="/resources/testharness.css"> | 
|  | <body> | 
|  | <div id="log"></div> | 
|  | <script> | 
|  | test(function() { | 
|  | var nodes = [newAnimation(createDiv(this)), new AnimationGroup([]), new AnimationSequence([])]; | 
|  | nodes.forEach(function(node) { | 
|  | assert_equals(node.parent, null, type(node) + '.parent should be null'); | 
|  | }); | 
|  | }, 'AnimationNode.parent is null if animation node does not have a parent animation group'); | 
|  |  | 
|  | test(function() { | 
|  | var test = this; | 
|  | var parents = [AnimationGroup, AnimationSequence]; | 
|  | parents.forEach(function(parentCtor) { | 
|  | var nodes = [newAnimation(createDiv(test)), new AnimationGroup([]), new AnimationSequence([])]; | 
|  | nodes.forEach(function(node) { | 
|  | var parent = new parentCtor([node]); | 
|  |  | 
|  | assert_equals(node.parent, parent, type(node) + '.parent should return ' + | 
|  | 'parent animation group of this animation node'); | 
|  | }); | 
|  | }); | 
|  | }, 'AnimationNode.parent returns parent animation group of this animation node'); | 
|  |  | 
|  | test(function() { | 
|  | var test = this; | 
|  | var parents = [AnimationGroup, AnimationSequence]; | 
|  | parents.forEach(function(parentCtor) { | 
|  | var nodes = [newAnimation(createDiv(test)), new AnimationGroup([]), new AnimationSequence([])]; | 
|  | var parent = new parentCtor([nodes[0], nodes[1], nodes[2]]); | 
|  | nodes.forEach(function(node) { | 
|  | assert_equals(node.parent, parent, type(node) + '.parent should return ' + | 
|  | 'parent animation group of this animation node'); | 
|  | }); | 
|  | }); | 
|  | }, 'AnimationNode.parent returns parent animation group of this animation node. ' + | 
|  | 'The group has several children nodes'); | 
|  |  | 
|  | // The rest is tested in mutator methods: AnimationNode.before(), AnimationNode.after(), | 
|  | // AnimationNode.replace(), AnimationNode.remove(), | 
|  | // AnimationGroup.prepend(), AnimationGroup.append(), AnimationGroup.clone() | 
|  | </script> | 
|  | </body> |