Style cleanup, vars, etc.

This commit is contained in:
David Glasser
2013-05-06 20:46:07 -07:00
parent 8e0cf9cfa8
commit 2e9ad511d8
2 changed files with 55 additions and 61 deletions

View File

@@ -694,32 +694,32 @@ LocalCollection._findInOrderedResults = function (query, doc) {
throw Error("object missing from query");
};
//This binary search puts a value between any equal values, and the first
//lesser value. This is to match the previous insertion behaviour of comparing
//each element and inserting it as soon as it compares less than the
//encountered value.
// This binary search puts a value between any equal values, and the first
// lesser value. This is to match the previous insertion behaviour of comparing
// each element and inserting it as soon as it compares less than the
// encountered value.
LocalCollection._binarySearch = function (cmp, array, value) {
if (array.length == 0) return 0;
lower = 0;
upper = array.length - 1;
if (array.length === 0) return 0;
var lower = 0;
var upper = array.length - 1;
while (lower <= upper) {
idx = Math.floor( (lower + upper) / 2 );
comparison = cmp(value, array[idx]);
//console.log("lower:"+lower + " upper:" + upper + " idx:"+idx +" c:"+comparison);
if (lower == upper) {
var idx = Math.floor( (lower + upper) / 2 );
var comparison = cmp(value, array[idx]);
if (lower === upper) {
if (comparison >= 0) idx++;
return idx;
}
if ( comparison < 0 )
if (comparison < 0)
upper = idx;
else
lower = idx + 1;
}
return idx;
}
// The loop should always end with the lower === upper case.
throw new Error("shouldn't happen");
};
LocalCollection._insertInSortedList = function (cmp, array, value) {
if (array.length === 0) {
@@ -727,7 +727,7 @@ LocalCollection._insertInSortedList = function (cmp, array, value) {
return 0;
}
idx = LocalCollection._binarySearch (cmp, array, value)
var idx = LocalCollection._binarySearch(cmp, array, value);
array.splice(idx, 0, value);
return idx;
};

View File

@@ -1049,66 +1049,60 @@ Tinytest.add("minimongo - array sort", function (test) {
});
Tinytest.add("minimongo - binary search", function (test) {
var forward_cmp = function (a, b) {
if (a < b)
return -1;
else if (b < a)
return 1;
else
return 0;
var forwardCmp = function (a, b) {
return a - b;
};
var backward_cmp = function (a, b) {
return -1 * forward_cmp(a, b);
var backwardCmp = function (a, b) {
return -1 * forwardCmp(a, b);
};
var check_search = function (cmp, array, value, expected, message) {
actual = LocalCollection._binarySearch(cmp, array, value);
var checkSearch = function (cmp, array, value, expected, message) {
var actual = LocalCollection._binarySearch(cmp, array, value);
if (expected != actual) {
test.fail({type: "minimongo-binary-search",
message: message + " : Expected index " + expected +
" but had " + actual
message: message + " : Expected index " + expected +
" but had " + actual
});
}
};
var check_search_forward = function (array, value, expected, message) {
check_search(forward_cmp, array, value, expected, message);
var checkSearchForward = function (array, value, expected, message) {
checkSearch(forwardCmp, array, value, expected, message);
}
var check_search_backward = function (array, value, expected, message) {
check_search(backward_cmp, array, value, expected, message);
var checkSearchBackward = function (array, value, expected, message) {
checkSearch(backwardCmp, array, value, expected, message);
}
check_search_forward([1, 2, 5, 7], 4, 2, "Inner insert");
check_search_forward([1, 2, 3, 4], 3, 3, "Inner insert, equal value");
check_search_forward([1, 2, 5], 4, 2, "Inner insert, odd length");
check_search_forward([1, 3, 5, 6], 9, 4, "End insert");
check_search_forward([1, 3, 5, 6], 0, 0, "Beginning insert");
check_search_forward([1], 0, 0, "Single array, less than.");
check_search_forward([1], 1, 1, "Single array, equal.");
check_search_forward([1], 2, 1, "Single array, greater than.");
check_search_forward([], 1, 0, "Empty array");
check_search_forward([1, 1, 1, 2, 2, 2, 2], 1, 3, "Highly degenerate array, lower");
check_search_forward([1, 1, 1, 2, 2, 2, 2], 2, 7, "Highly degenerate array, upper");
check_search_forward([2, 2, 2, 2, 2, 2, 2], 1, 0, "Highly degenerate array, lower");
check_search_forward([2, 2, 2, 2, 2, 2, 2], 2, 7, "Highly degenerate array, equal");
check_search_forward([2, 2, 2, 2, 2, 2, 2], 3, 7, "Highly degenerate array, upper");
check_search_backward([7, 5, 2, 1], 4, 2, "Backward: Inner insert");
check_search_backward([4, 3, 2, 1], 3, 2, "Backward: Inner insert, equal value");
check_search_backward([5, 2, 1], 4, 1, "Backward: Inner insert, odd length");
check_search_backward([6, 5, 3, 1], 9, 0, "Backward: Beginning insert");
check_search_backward([6, 5, 3, 1], 0, 4, "Backward: End insert");
check_search_backward([1], 0, 1, "Backward: Single array, less than.");
check_search_backward([1], 1, 1, "Backward: Single array, equal.");
check_search_backward([1], 2, 0, "Backward: Single array, greater than.");
check_search_backward([], 1, 0, "Backward: Empty array");
check_search_backward([2, 2, 2, 2, 1, 1, 1], 1, 7, "Backward: Degenerate array, lower");
check_search_backward([2, 2, 2, 2, 1, 1, 1], 2, 4, "Backward: Degenerate array, upper");
check_search_backward([2, 2, 2, 2, 2, 2, 2], 1, 7, "Backward: Highly degenerate array, upper");
check_search_backward([2, 2, 2, 2, 2, 2, 2], 2, 7, "Backward: Highly degenerate array, upper");
check_search_backward([2, 2, 2, 2, 2, 2, 2], 3, 0, "Backward: Highly degenerate array, upper");
checkSearchForward([1, 2, 5, 7], 4, 2, "Inner insert");
checkSearchForward([1, 2, 3, 4], 3, 3, "Inner insert, equal value");
checkSearchForward([1, 2, 5], 4, 2, "Inner insert, odd length");
checkSearchForward([1, 3, 5, 6], 9, 4, "End insert");
checkSearchForward([1, 3, 5, 6], 0, 0, "Beginning insert");
checkSearchForward([1], 0, 0, "Single array, less than.");
checkSearchForward([1], 1, 1, "Single array, equal.");
checkSearchForward([1], 2, 1, "Single array, greater than.");
checkSearchForward([], 1, 0, "Empty array");
checkSearchForward([1, 1, 1, 2, 2, 2, 2], 1, 3, "Highly degenerate array, lower");
checkSearchForward([1, 1, 1, 2, 2, 2, 2], 2, 7, "Highly degenerate array, upper");
checkSearchForward([2, 2, 2, 2, 2, 2, 2], 1, 0, "Highly degenerate array, lower");
checkSearchForward([2, 2, 2, 2, 2, 2, 2], 2, 7, "Highly degenerate array, equal");
checkSearchForward([2, 2, 2, 2, 2, 2, 2], 3, 7, "Highly degenerate array, upper");
checkSearchBackward([7, 5, 2, 1], 4, 2, "Backward: Inner insert");
checkSearchBackward([4, 3, 2, 1], 3, 2, "Backward: Inner insert, equal value");
checkSearchBackward([5, 2, 1], 4, 1, "Backward: Inner insert, odd length");
checkSearchBackward([6, 5, 3, 1], 9, 0, "Backward: Beginning insert");
checkSearchBackward([6, 5, 3, 1], 0, 4, "Backward: End insert");
checkSearchBackward([1], 0, 1, "Backward: Single array, less than.");
checkSearchBackward([1], 1, 1, "Backward: Single array, equal.");
checkSearchBackward([1], 2, 0, "Backward: Single array, greater than.");
checkSearchBackward([], 1, 0, "Backward: Empty array");
checkSearchBackward([2, 2, 2, 2, 1, 1, 1], 1, 7, "Backward: Degenerate array, lower");
checkSearchBackward([2, 2, 2, 2, 1, 1, 1], 2, 4, "Backward: Degenerate array, upper");
checkSearchBackward([2, 2, 2, 2, 2, 2, 2], 1, 7, "Backward: Highly degenerate array, upper");
checkSearchBackward([2, 2, 2, 2, 2, 2, 2], 2, 7, "Backward: Highly degenerate array, upper");
checkSearchBackward([2, 2, 2, 2, 2, 2, 2], 3, 0, "Backward: Highly degenerate array, upper");
});
Tinytest.add("minimongo - modify", function (test) {