UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

233 lines (206 loc) 7.73 kB
<!DOCTYPE html> <html> <!-- Copyright 2009 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by the Apache License, Version 2.0. See the COPYING file for details. --> <!-- Author: arv@google.com (Erik Arvidsson) --> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Closure Unit Tests - goog.ui.tree.BaseNode</title> <script src="../../base.js"></script> <script> goog.require('goog.dom'); goog.require('goog.dom.classes'); goog.require('goog.testing.jsunit'); goog.require('goog.ui.Component'); goog.require('goog.ui.tree.BaseNode'); goog.require('goog.ui.tree.BaseNode.EventType'); goog.require('goog.ui.tree.TreeControl'); goog.require('goog.ui.tree.TreeNode'); </script> </head> <body> <script> function testAdd() { var node1 = new goog.ui.tree.TreeNode('node1'); var node2 = new goog.ui.tree.TreeNode('node2'); var node3 = new goog.ui.tree.TreeNode('node3'); var node4 = new goog.ui.tree.TreeNode('node4'); assertEquals('node2 added', node2, node1.add(node2)); assertEquals('node3 added', node3, node1.add(node3)); assertEquals('node4 added', node4, node1.add(node4, node3)); assertEquals('node1 has 3 children', 3, node1.getChildCount()); assertEquals('first child', node2, node1.getChildAt(0)); assertEquals('second child', node4, node1.getChildAt(1)); assertEquals('third child', node3, node1.getChildAt(2)); assertNull('node1 has no parent', node1.getParent()); assertEquals('the parent of node2 is node1', node1, node2.getParent()); assertEquals('node4 moved under node2', node4, node2.add(node4)); assertEquals('node1 has 2 children', 2, node1.getChildCount()); assertEquals('node2 has 1 child', 1, node2.getChildCount()); assertEquals('the child of node2 is node4', node4, node2.getChildAt(0)); assertEquals('the parent of node4 is node2', node2, node4.getParent()); } function testExpandIconAfterAddChild() { var tree = new goog.ui.tree.TreeControl('root'); var node1 = new goog.ui.tree.TreeNode('node1') var node2 = new goog.ui.tree.TreeNode('node2') tree.render(goog.dom.createDom('div')); tree.addChild(node1); node1.addChild(node2); assertTrue('expand icon of node1 changed to L+', goog.dom.classes.has( node1.getExpandIconElement(), 'goog-tree-expand-icon-lplus')); node1.removeChild(node2); assertFalse('expand icon of node1 changed back to L', goog.dom.classes.has( node1.getExpandIconElement(), 'goog-tree-expand-icon-lplus')); } function testExpandEvents() { var n = new goog.ui.tree.BaseNode(''); n.getTree = function() {}; var expanded = false; n.setExpanded(expanded); assertEquals(expanded, n.getExpanded()); var callCount = 0; n.addEventListener(goog.ui.tree.BaseNode.EventType.BEFORE_EXPAND, function(e) { assertEquals(expanded, n.getExpanded()); callCount++; }); n.addEventListener(goog.ui.tree.BaseNode.EventType.EXPAND, function(e) { assertEquals(!expanded, n.getExpanded()); callCount++; }); n.setExpanded(!expanded); assertEquals(2, callCount); } function testExpandEvents2() { var n = new goog.ui.tree.BaseNode(''); n.getTree = function() {}; var expanded = true; n.setExpanded(expanded); assertEquals(expanded, n.getExpanded()); var callCount = 0; n.addEventListener(goog.ui.tree.BaseNode.EventType.BEFORE_COLLAPSE, function(e) { assertEquals(expanded, n.getExpanded()); callCount++; }); n.addEventListener(goog.ui.tree.BaseNode.EventType.COLLAPSE, function(e) { assertEquals(!expanded, n.getExpanded()); callCount++; }); n.setExpanded(!expanded); assertEquals(2, callCount); } function testExpandEventsPreventDefault() { var n = new goog.ui.tree.BaseNode(''); n.getTree = function() {}; var expanded = true; n.setExpanded(expanded); assertEquals(expanded, n.getExpanded()); var callCount = 0; n.addEventListener(goog.ui.tree.BaseNode.EventType.BEFORE_COLLAPSE, function(e) { assertEquals(expanded, n.getExpanded()); e.preventDefault(); callCount++; }); n.addEventListener(goog.ui.tree.BaseNode.EventType.COLLAPSE, function(e) { fail('Should not fire COLLAPSE'); }); n.setExpanded(!expanded); assertEquals(1, callCount); } function testExpandEventsPreventDefault2() { var n = new goog.ui.tree.BaseNode(''); n.getTree = function() {}; var expanded = false; n.setExpanded(expanded); assertEquals(expanded, n.getExpanded()); var callCount = 0; n.addEventListener(goog.ui.tree.BaseNode.EventType.BEFORE_EXPAND, function(e) { assertEquals(expanded, n.getExpanded()); e.preventDefault(); callCount++; }); n.addEventListener(goog.ui.tree.BaseNode.EventType.EXPAND, function(e) { fail('Should not fire EXPAND'); }); n.setExpanded(!expanded); assertEquals(1, callCount); } function testGetNextShownNode() { var tree = new goog.ui.tree.TreeControl('tree'); assertNull('next node for unpopulated tree', tree.getNextShownNode()); var node1 = new goog.ui.tree.TreeNode('node1'); var node2 = new goog.ui.tree.TreeNode('node2'); var node3 = new goog.ui.tree.TreeNode('node3'); node1.add(node2); node1.add(node3); assertNull('next node for unexpanded node1', node1.getNextShownNode()); node1.expand(); assertEquals('next node for expanded node1', node2, node1.getNextShownNode()); assertEquals('next node for node2', node3, node2.getNextShownNode()); assertNull('next node for node3', node3.getNextShownNode()); tree.add(node1); assertEquals('next node for populated tree', node1, tree.getNextShownNode()); assertNull('next node for node3 inside the tree', node3.getNextShownNode()); var component = new goog.ui.Component(); component.addChild(tree); assertNull('next node for node3 inside the tree if the tree has parent', node3.getNextShownNode()); } function testInvisibleNodesInUnrenderedTree() { var tree = new goog.ui.tree.TreeControl('tree'); var a = new goog.ui.tree.TreeNode('a'); var b = new goog.ui.tree.TreeNode('b'); tree.add(a); a.add(b); tree.render(); var textContent = tree.getElement().textContent || tree.getElement().innerText; assertContains('Node should be rendered.', 'tree', textContent); assertContains('Node should be rendered.', 'a', textContent); assertNotContains('Unexpanded node child should not be rendered.', 'b', textContent); a.expand(); var textContent = tree.getElement().textContent || tree.getElement().innerText; assertContains('Node should be rendered.', 'tree', textContent); assertContains('Node should be rendered.', 'a', textContent); assertContains('Expanded node child should be rendered.', 'b', textContent); tree.dispose(); } function testInvisibleNodesInRenderedTree() { var tree = new goog.ui.tree.TreeControl('tree'); tree.render(); var a = new goog.ui.tree.TreeNode('a'); var b = new goog.ui.tree.TreeNode('b'); tree.add(a); a.add(b); var textContent = tree.getElement().textContent || tree.getElement().innerText; assertContains('Node should be rendered.', 'tree', textContent); assertContains('Node should be rendered.', 'a', textContent); assertNotContains('Unexpanded node child should not be rendered.', 'b', textContent); a.expand(); var textContent = tree.getElement().textContent || tree.getElement().innerText; assertContains('Node should be rendered.', 'tree', textContent); assertContains('Node should be rendered.', 'a', textContent); assertContains('Expanded node child should be rendered.', 'b', textContent); tree.dispose(); } </script> </body> </html>