1<!DOCTYPE html> 2<html> 3<head> 4<!-- TODO(arv): Check in Closue unit tests and make this run as part of the 5 tests --> 6<script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script> 7<script src="cr.js"></script> 8<script src="cr/promise.js"></script> 9<script src="bmm/treeiterator.js"></script> 10<script src="bmm.js"></script> 11<script> 12 13goog.require('goog.testing.jsunit'); 14 15</script> 16</head> 17<body> 18<script> 19 20var tree = { 21 id: 0, 22 children: [ 23 { 24 id: 1, 25 children: [ 26 {id: 2}, 27 {id: 3, children: []} 28 ] 29 }, 30 {id: 4}, 31 {id: 5} 32 ] 33}; 34 35// Mock chrome.experimental.bookmarkManager.getSubtree 36chrome = chrome || {}; 37chrome.experimental = chrome.experimental || {}; 38chrome.experimental.bookmarkManager = chrome.experimental.bookmarkManager || {}; 39 40var callbacks = {}; 41 42chrome.experimental.bookmarkManager.getSubtree = function(id, foldersOnly, 43 callback) { 44 callbacks[id] = callbacks[id] || []; 45 callbacks[id].push(callback); 46 callbacks[id].$calls = callbacks[id].$calls ? callbacks[id].$calls++ : 1; 47}; 48 49chrome.experimental.bookmarkManager.getSubtree.load = function(node) { 50 // getSubtree gets the root tree when id is ''. 51 var id = node.id; 52 if (id == tree.id) 53 id = ''; 54 for (var i = 0; i < callbacks[id].length; i++) { 55 callbacks[id][i].call(null, [node]); 56 } 57}; 58 59function setUp() { 60 callbacks = {} 61} 62 63function testLoadSingle() { 64 var calls = 0; 65 function f(node) { 66 calls++; 67 assertEquals(tree, node); 68 } 69 var p = bmm.loadTree(); 70 p.addListener(f); 71 72 chrome.experimental.bookmarkManager.getSubtree.load(tree); 73 74 assertEquals(1, calls); 75 assertEquals(1, callbacks[''].$calls); 76} 77 78function testLoadMultiple() { 79 var calls1 = 0; 80 var calls2 = 0; 81 function f1(node) { 82 calls1++; 83 assertEquals(tree, node); 84 } 85 function f2(node) { 86 calls2++; 87 assertEquals(tree, node); 88 } 89 90 var p = bmm.loadTree(); 91 var p2 = bmm.loadTree(); 92 p.addListener(f1); 93 p2.addListener(f2); 94 95 chrome.experimental.bookmarkManager.getSubtree.load(tree); 96 97 assertEquals(1, calls1); 98 assertEquals(1, calls2); 99 assertEquals(1, callbacks[''].$calls); 100} 101 102function testLoadSubtree() { 103 var calls = 0; 104 function f(node) { 105 calls++; 106 assertEquals(tree.children[0], node); 107 } 108 var p = bmm.loadSubtree(1); 109 p.addListener(f); 110 111 chrome.experimental.bookmarkManager.getSubtree.load(tree.children[0]); 112 113 assertEquals(1, calls); 114 assertEquals(1, callbacks[1].$calls); 115} 116 117</script> 118</body> 119</html> 120