This commit is contained in:
41
packages/util/__test__/predicates.spec.ts
Normal file
41
packages/util/__test__/predicates.spec.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { not } from "../src/predicates";
|
||||
|
||||
describe("predicates", () => {
|
||||
describe("not", () => {
|
||||
it("should not a simple boolean function", () => {
|
||||
const isTrue = (): boolean => true;
|
||||
const isFalse = not(isTrue);
|
||||
|
||||
expect(isFalse()).toBe(false);
|
||||
});
|
||||
|
||||
it("should not a numeric predicate", () => {
|
||||
const isPositive = (num: number): boolean => num > 0;
|
||||
const isNotPositive = not(isPositive);
|
||||
|
||||
expect(isNotPositive(-5)).toBe(true);
|
||||
expect(isNotPositive(10)).toBe(false);
|
||||
});
|
||||
|
||||
it("should not a predicate taking multiple arguments", () => {
|
||||
const containsLetter = (
|
||||
str1: string,
|
||||
str2: string,
|
||||
letter: string,
|
||||
): boolean => str1.includes(letter) || str2.includes(letter);
|
||||
const doesNotContainLetter = not(containsLetter);
|
||||
|
||||
expect(doesNotContainLetter("hello", "world", "x")).toBe(true);
|
||||
expect(doesNotContainLetter("apple", "banana", "a")).toBe(false);
|
||||
});
|
||||
|
||||
it("should preserve type safety", () => {
|
||||
const isEven = (num: number): boolean => num % 2 === 0;
|
||||
const isOdd = not(isEven);
|
||||
|
||||
expect(isOdd(3)).toBe(true);
|
||||
expect(isOdd(4)).toBe(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user