forerunnerdb
Version:
A NoSQL document store database for browsers and Node.js.
154 lines (130 loc) • 3.29 kB
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>