UNPKG

esmodule-builder

Version:

ECMAScript-Module (ES Module) builder.

145 lines (120 loc) 3.17 kB
/* -*- 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 ); };