UNPKG

sflow

Version:

sflow is a powerful and highly-extensible library designed for processing and manipulating streams of data effortlessly. Inspired by the functional programming paradigm, it provides a rich set of utilities for transforming streams, including chunking, fil

56 lines (45 loc) 1.88 kB
import { it, expect } from "bun:test"; import { sortBy, deepEquals } from "./utils"; it("sortBy sorts array by key function", () => { const result = sortBy((x: number) => x, [3, 1, 4, 1, 5, 9, 2, 6]); expect(result).toEqual([1, 1, 2, 3, 4, 5, 6, 9]); }); it("sortBy sorts array by string key", () => { const items = [{ name: "Charlie" }, { name: "Alice" }, { name: "Bob" }]; const result = sortBy((x) => x.name, items); expect(result.map((x) => x.name)).toEqual(["Alice", "Bob", "Charlie"]); }); it("sortBy handles equal elements", () => { const result = sortBy((x: number) => x, [2, 2, 1]); expect(result).toEqual([1, 2, 2]); }); it("deepEquals returns true for equal primitives", () => { expect(deepEquals(1, 1)).toBe(true); expect(deepEquals("hello", "hello")).toBe(true); expect(deepEquals(null, null)).toBe(true); }); it("deepEquals returns false for different primitives", () => { expect(deepEquals(1, 2)).toBe(false); expect(deepEquals("a", "b")).toBe(false); }); it("deepEquals returns false for null vs non-null", () => { expect(deepEquals(null, 1)).toBe(false); expect(deepEquals(1, null)).toBe(false); }); it("deepEquals returns false for different types", () => { expect(deepEquals(1, "1")).toBe(false); }); it("deepEquals compares arrays deeply", () => { expect(deepEquals([1, 2, 3], [1, 2, 3])).toBe(true); expect(deepEquals([1, 2], [1, 2, 3])).toBe(false); expect(deepEquals([1, 2, 3], [1, 2, 4])).toBe(false); }); it("deepEquals compares objects deeply", () => { expect(deepEquals({ a: 1, b: 2 }, { a: 1, b: 2 })).toBe(true); expect(deepEquals({ a: 1 }, { a: 1, b: 2 })).toBe(false); expect(deepEquals({ a: 1, b: 2 }, { a: 1 })).toBe(false); expect(deepEquals({ a: 1 }, { a: 2 })).toBe(false); }); it("deepEquals handles non-array vs array", () => { expect(deepEquals([1, 2], { 0: 1, 1: 2 })).toBe(false); });