56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import { find } from "./binary-search";
|
|
|
|
describe("Binary Search", () => {
|
|
it("finds a value in an array with one element", () => {
|
|
expect(find([6], 6)).toEqual(0);
|
|
});
|
|
|
|
it("finds a value in the middle of an array", () => {
|
|
const array = [1, 3, 4, 6, 8, 9, 11];
|
|
expect(find(array, 6)).toEqual(3);
|
|
});
|
|
|
|
it("finds a value at the beginning of an array", () => {
|
|
const array = [1, 3, 4, 6, 8, 9, 11];
|
|
expect(find(array, 1)).toEqual(0);
|
|
});
|
|
|
|
it("finds a value at the end of an array", () => {
|
|
const array = [1, 3, 4, 6, 8, 9, 11];
|
|
expect(find(array, 11)).toEqual(6);
|
|
});
|
|
|
|
it("finds a value in an array of odd length", () => {
|
|
const array = [1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 634];
|
|
expect(find(array, 144)).toEqual(9);
|
|
});
|
|
|
|
it("finds a value in an array of even length", () => {
|
|
const array = [1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377];
|
|
expect(find(array, 21)).toEqual(5);
|
|
});
|
|
|
|
it("identifies that a value is not included in the array", () => {
|
|
const array = [1, 3, 4, 6, 8, 9, 11];
|
|
expect(() => find(array, 7)).toThrow(new Error("Value not in array"));
|
|
});
|
|
|
|
it("a value smaller than the array's smallest value is not found", () => {
|
|
const array = [1, 3, 4, 6, 8, 9, 11];
|
|
expect(() => find(array, 0)).toThrow(new Error("Value not in array"));
|
|
});
|
|
|
|
it("a value larger than the array's largest value is not found", () => {
|
|
const array = [1, 3, 4, 6, 8, 9, 11];
|
|
expect(() => find(array, 13)).toThrow(new Error("Value not in array"));
|
|
});
|
|
|
|
it("nothing is found in an empty array", () => {
|
|
expect(() => find([], 1)).toThrow(new Error("Value not in array"));
|
|
});
|
|
|
|
it("nothing is found when the left and right bounds cross", () => {
|
|
expect(() => find([1, 2], 0)).toThrow(new Error("Value not in array"));
|
|
});
|
|
});
|