ds-algo-study
Version:
Just experimenting with publishing a package
81 lines (64 loc) • 2.58 kB
JavaScript
const { expect } = require('chai');
const { radixSort } = require('../lib/radix_sort');
describe('radixSort', () => {
let input;
let expected;
it('Should exist', () => {
expect(radixSort).to.exist;
});
it('Should be a function', () => {
expect(radixSort).to.be.a('function');
});
it('Should have exactly one input', () => {
expect(radixSort.length).to.equal(1);
});
it('Should return null if input is not an array', () => {
input = { 'Not': 'an array.' };
expect(radixSort(input)).to.equal(null);
});
it('Should return an array if an array is provided as input', () => {
input = [1, 3, 2];
expect(radixSort(input)).to.be.an('array');
});
it('Should return an empty array for input arrays of length 0', () => {
input = [];
expect(radixSort(input)).to.eql([]);
});
it('Should return the input array for input arrays of length 1', () => {
input = [1];
expect(radixSort(input)).to.eql([1]);
});
it('Should create a new result array, and should NOT mutate the original array, ', () => {
input = [1, 3, 2];
expect(radixSort(input)).not.to.equal(input);
});
it('Should sort a small array of integers numerically in ascending order', () => {
input = [4, 9, 0, 23, 15, 100, 66, 41, 5, 10];
expected = [0, 4, 5, 9, 10, 15, 23, 41, 66, 100];
expect(radixSort(input)).to.eql(expected);
});
it('Should sort a large array of randomly generated integers numerically in ascending order', () => {
const max = 999999999; // Max integer
const length = 1000 // Length of input array
let number; // Each individual integer
let result; // Result after sorting
for (let i = 0; i < length; i++) {
input.push(Math.floor(Math.random() * max));
}
result = radixSort(input);
expected = input.sort((a, b) => a - b);
for (let i = 0; i < length; i++) {
expect(result[i]).to.equal(expected[i]);
}
});
it('Should handle pre-sorted arrays', () => {
input = [0, 4, 5, 9, 10, 15, 23, 41, 66, 100];
expected = [0, 4, 5, 9, 10, 15, 23, 41, 66, 100];
expect(radixSort(input)).to.eql(expected);
});
it('Should sort reverse-sorted arrays', () => {
input = [100, 66, 41, 23, 15, 10, 9, 5, 4, 0];
expected = [0, 4, 5, 9, 10, 15, 23, 41, 66, 100];
expect(radixSort(input)).to.eql(expected);
});
});