esmodule-builder
Version:
ECMAScript-Module (ES Module) builder.
145 lines (120 loc) • 3.17 kB
JavaScript
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
* Copyright 2011 Mozilla Foundation and contributors
* Licensed under the New BSD license. See LICENSE or:
* http://opensource.org/licenses/BSD-3-Clause
*/
const binarySearch = require("../lib/binary-search");
function numberCompare(a, b) {
return a - b;
}
exports["test too high with default (glb) bias"] = function(assert) {
const needle = 30;
const haystack = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20];
assert.doesNotThrow(function() {
binarySearch.search(needle, haystack, numberCompare);
});
assert.equal(
haystack[binarySearch.search(needle, haystack, numberCompare)],
20
);
};
exports["test too low with default (glb) bias"] = function(assert) {
const needle = 1;
const haystack = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20];
assert.doesNotThrow(function() {
binarySearch.search(needle, haystack, numberCompare);
});
assert.equal(binarySearch.search(needle, haystack, numberCompare), -1);
};
exports["test too high with lub bias"] = function(assert) {
const needle = 30;
const haystack = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20];
assert.doesNotThrow(function() {
binarySearch.search(needle, haystack, numberCompare);
});
assert.equal(
binarySearch.search(
needle,
haystack,
numberCompare,
binarySearch.LEAST_UPPER_BOUND
),
-1
);
};
exports["test too low with lub bias"] = function(assert) {
const needle = 1;
const haystack = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20];
assert.doesNotThrow(function() {
binarySearch.search(needle, haystack, numberCompare);
});
assert.equal(
haystack[
binarySearch.search(
needle,
haystack,
numberCompare,
binarySearch.LEAST_UPPER_BOUND
)
],
2
);
};
exports["test exact search"] = function(assert) {
const needle = 4;
const haystack = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20];
assert.equal(
haystack[binarySearch.search(needle, haystack, numberCompare)],
4
);
};
exports["test fuzzy search with default (glb) bias"] = function(assert) {
const needle = 19;
const haystack = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20];
assert.equal(
haystack[binarySearch.search(needle, haystack, numberCompare)],
18
);
};
exports["test fuzzy search with lub bias"] = function(assert) {
const needle = 19;
const haystack = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20];
assert.equal(
haystack[
binarySearch.search(
needle,
haystack,
numberCompare,
binarySearch.LEAST_UPPER_BOUND
)
],
20
);
};
exports["test multiple matches"] = function(assert) {
const needle = 5;
const haystack = [1, 1, 2, 5, 5, 5, 13, 21];
assert.equal(
binarySearch.search(
needle,
haystack,
numberCompare,
binarySearch.LEAST_UPPER_BOUND
),
3
);
};
exports["test multiple matches at the beginning"] = function(assert) {
const needle = 1;
const haystack = [1, 1, 2, 5, 5, 5, 13, 21];
assert.equal(
binarySearch.search(
needle,
haystack,
numberCompare,
binarySearch.LEAST_UPPER_BOUND
),
0
);
};