@inglorious/utils
Version:
A set of general-purpose utility functions designed with functional programming principles in mind.
49 lines (40 loc) • 1.44 kB
JavaScript
import { expect, test } from "vitest"
import { ensureV, v } from "./v"
test("ensureV() should convert a numeric array into a vector", () => {
const array = [1, 2, 3]
const result = ensureV(array)
expect(result).toStrictEqual([1, 2, 3])
expect(result.__isVector__).toBe(true)
})
test("ensureV() should return an existing vector unchanged", () => {
const vector = v(4, 5, 6)
const result = ensureV(vector)
expect(result).toBe(vector)
expect(result.__isVector__).toBe(true)
})
test("ensureV() should not convert an array with non-finite numbers", () => {
const array = [1, Infinity, 3]
const result = ensureV(array)
expect(result).toBe(array)
expect(result.__isVector__).toBeUndefined()
})
test("ensureV() should not convert an array with non-numeric values", () => {
const array = [1, "a", 3]
const result = ensureV(array)
expect(result).toBe(array)
expect(result.__isVector__).toBeUndefined()
})
test("ensureV() should return non-array values unchanged", () => {
expect(ensureV(123)).toBe(123)
expect(ensureV("hello")).toBe("hello")
const obj = { a: 1 }
expect(ensureV(obj)).toBe(obj)
})
test("a vector created with the v() function is just a number array", () => {
const vector = v(1, 2, 3)
expect(vector).toStrictEqual([1, 2, 3])
})
test("a vector created with the v() function has a __isVector__ property", () => {
const vector = v(1, 2, 3)
expect(vector.__isVector__).toBe(true)
})