Files
exercise-typescript/typescript/binary-search/binary-search.test.ts
2022-11-09 20:30:56 +01:00

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"));
});
});