UNPKG

forerunnerdb

Version:

A NoSQL document store database for browsers and Node.js.

154 lines (130 loc) 3.29 kB
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Console Runner</title> <script src="../unitTests/lib/jquery-1.11.0.min.js"></script> <script src="../dist/fdb-all.js"></script> <script src="../dist/fdb-autobind.js"></script> <script src="../unitTests/lib/qunit.js"></script> <script src="../unitTests/lib/highcharts-all.js"></script> <script src="../../js/lib/BinaryTree.js"></script> </head> <body> <script> var bst = new BinarySearchTree({ names: { first: 1 }, age: -1 }), search, alpha, count = 100, nameCount = 10, nameIndex, name, obj, start; alpha = 'abcdefghijklmnopqrstuvwxyz0123456789'; // Generate names and ages while (count--) { name = ''; for (nameIndex = 0; nameIndex < nameCount; nameIndex++) { name += alpha[Math.floor(Math.random() * alpha.length)]; } obj = { names: {first: name}, age: Math.ceil(Math.random() * 100) }; bst.insert(obj); } bst.insert({names: {first: 'jim'}, age: 12}); bst.insert({names: {first: 'bob'}, age: 14}); bst.insert({names: {first: 'hal'}, age: 16}); bst.insert({names: {first: 'hal'}, age: 17}); bst.insert({names: {first: 'hal'}, age: 19}); bst.insert({names: {first: 'hal'}, age: 19}); //console.log("Inorder Traversal"); bst.inOrderTraversal(); start = new Date().getTime(); search = bst.search({names: {first:'hal'}}); console.log(new Date().getTime() - start, search); start = new Date().getTime(); search = bst.search({names: {first:'hal'}, age: 17}); console.log(new Date().getTime() - start, search); start = new Date().getTime(); search = bst.search({ names: { first: { $gte: 'ha' } } }); console.log(new Date().getTime() - start, search); start = new Date().getTime(); search = bst.search({ names: { first: { $gt: 'hal' } }, age: { $lt: 19 } }); console.log(new Date().getTime() - start, search); for (var i = 0; i < search.nodes.length; i += 2) { console.log(search.path[i], 'at node', search.path[i+1].key, search.path[i+1]); } /*console.log("Preorder Traversal"); bst.preOrderTraversal(); console.log("Postorder Traversal"); bst.postOrderTraversal(); console.log("Search for valid"); bst.depthFirstSearch({name: 'Hal'}); console.log("Search for invalid"); bst.depthFirstSearch({name: 'Spock'}); bst.breadthFirstTraversal();*/ /*var genSearch = function (query) { var keys = [], func, funcStart = 'function generatedSearch (val) {', funcEnd = '};', funcCode = '', keyValType, i; for (i in query) { keyValType = typeof query[i]; if (keyValType === 'object') { // Traverse } if (keyValType === 'string') { funcCode += 'if ("' + query[i] + '" < val.' + i + ') { return -1 ; } '; funcCode += 'else if ("' + query[i] + '" > val.' + i + ') { return 1 ;} '; funcCode += 'else { return 0 ;}'; } } eval('func = ' + funcStart + funcCode + funcEnd); return func; }; var gend = genSearch({name: 'Moo'}); console.log(gend);*/ /*bst.search(function (val) { if (a.name > b.name) { return 1; } else if (a.name < b.name) { return -1; } else { if (a.age < b.age) { return -1; } else if (a.age > b.age) { return 1; } else { return 0; } } });*/ </script> </body> </html>