87 lines
1.6 KiB
TypeScript
87 lines
1.6 KiB
TypeScript
import { sortPush } from "../utils/sortPush";
|
|
|
|
const sortFn = (a: number, b: number) => a - b;
|
|
|
|
it("should sort push length=0", () => {
|
|
const a: any[] = [];
|
|
const x = -1;
|
|
const res = [...a, x].sort(sortFn);
|
|
|
|
sortPush(a, x, sortFn);
|
|
|
|
expect(a).toEqual(res);
|
|
});
|
|
|
|
it("should sort push under", () => {
|
|
const a = [1, 2, 3, 4, 5];
|
|
const x = -1;
|
|
const res = [...a, x].sort(sortFn);
|
|
|
|
sortPush(a, x, sortFn);
|
|
|
|
expect(a).toEqual(res);
|
|
});
|
|
|
|
it("should sort push 0", () => {
|
|
const a = [1, 2, 3, 4, 5];
|
|
const x = 1;
|
|
const res = [...a, x].sort(sortFn);
|
|
|
|
sortPush(a, x, sortFn);
|
|
|
|
expect(a).toEqual(res);
|
|
});
|
|
|
|
it("should sort push end", () => {
|
|
const a = [1, 2, 3, 4, 5];
|
|
const x = 5;
|
|
const res = [...a, x].sort(sortFn);
|
|
|
|
sortPush(a, x, sortFn);
|
|
|
|
expect(a).toEqual(res);
|
|
});
|
|
|
|
it("should sort push over", () => {
|
|
const a = [1, 2, 3, 4, 5];
|
|
const x = 10;
|
|
const res = [...a, x].sort(sortFn);
|
|
|
|
sortPush(a, x, sortFn);
|
|
|
|
expect(a).toEqual(res);
|
|
});
|
|
|
|
it("should sort push inside", () => {
|
|
const a = [1, 2, 3, 4, 5];
|
|
const x = 1.5;
|
|
const res = [...a, x].sort(sortFn);
|
|
|
|
sortPush(a, x, sortFn);
|
|
|
|
expect(a).toEqual(res);
|
|
});
|
|
|
|
describe("benchmark", () => {
|
|
const n = 200;
|
|
|
|
const samples = Array.from({ length: 5000 }, () => [
|
|
Math.random(),
|
|
Array.from({ length: n }, () => Math.random()),
|
|
]);
|
|
const s0 = samples.map(([x, arr]: any) => [x, arr.slice()]);
|
|
const s1 = samples.map(([x, arr]: any) => [x, arr.slice()]);
|
|
|
|
it("push + sort", () => {
|
|
for (const [x, arr] of s0) {
|
|
arr.push(x);
|
|
arr.sort(sortFn);
|
|
}
|
|
});
|
|
it("sortPush", () => {
|
|
for (const [x, arr] of s1) {
|
|
sortPush(arr, x, sortFn);
|
|
}
|
|
});
|
|
});
|