predictype
Version:
PredicType is a library of pre-built and tested predicates for TypeScript, covering various data types and operations.
103 lines (102 loc) • 6.46 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const sets_js_1 = require("../../enums/sets.js");
const setState_js_1 = require("./setState.js");
(0, vitest_1.describe)('setState', () => {
(0, vitest_1.describe)('IS_EMPTY', () => {
(0, vitest_1.it)('should return true for empty set', () => {
const a = new Set();
(0, vitest_1.expect)((0, setState_js_1.setState)(a, sets_js_1.SetStateEnum.IS_EMPTY)).toBe(true);
(0, vitest_1.expect)((0, setState_js_1.setState)(a, 'is_empty')).toBe(true);
});
(0, vitest_1.it)('should return false for non-empty set', () => {
const b = new Set([1]);
(0, vitest_1.expect)((0, setState_js_1.setState)(b, sets_js_1.SetStateEnum.IS_EMPTY)).toBe(false);
(0, vitest_1.expect)((0, setState_js_1.setState)(b, 'is_empty')).toBe(false);
});
});
(0, vitest_1.describe)('IS_NOT_EMPTY', () => {
(0, vitest_1.it)('should return true for non-empty set', () => {
const b = new Set([1]);
(0, vitest_1.expect)((0, setState_js_1.setState)(b, sets_js_1.SetStateEnum.IS_NOT_EMPTY)).toBe(true);
(0, vitest_1.expect)((0, setState_js_1.setState)(b, 'is_not_empty')).toBe(true);
});
(0, vitest_1.it)('should return false for empty set', () => {
const a = new Set();
(0, vitest_1.expect)((0, setState_js_1.setState)(a, sets_js_1.SetStateEnum.IS_NOT_EMPTY)).toBe(false);
(0, vitest_1.expect)((0, setState_js_1.setState)(a, 'is_not_empty')).toBe(false);
});
});
(0, vitest_1.describe)('HAS_PRIMITIVES', () => {
(0, vitest_1.it)('should return true when set contains primitive values', () => {
const s1 = new Set([1, 2, 3]);
const s2 = new Set(['hello', 'world']);
const s3 = new Set([true, false]);
const s4 = new Set([BigInt(123)]);
const s5 = new Set([Symbol('test')]);
const s6 = new Set([null, undefined]);
const s7 = new Set([1, { id: 1 }]); // mixed
(0, vitest_1.expect)((0, setState_js_1.setState)(s1, sets_js_1.SetStateEnum.HAS_PRIMITIVES)).toBe(true);
(0, vitest_1.expect)((0, setState_js_1.setState)(s2, sets_js_1.SetStateEnum.HAS_PRIMITIVES)).toBe(true);
(0, vitest_1.expect)((0, setState_js_1.setState)(s3, sets_js_1.SetStateEnum.HAS_PRIMITIVES)).toBe(true);
(0, vitest_1.expect)((0, setState_js_1.setState)(s4, sets_js_1.SetStateEnum.HAS_PRIMITIVES)).toBe(true);
(0, vitest_1.expect)((0, setState_js_1.setState)(s5, sets_js_1.SetStateEnum.HAS_PRIMITIVES)).toBe(true);
(0, vitest_1.expect)((0, setState_js_1.setState)(s6, sets_js_1.SetStateEnum.HAS_PRIMITIVES)).toBe(true);
(0, vitest_1.expect)((0, setState_js_1.setState)(s7, sets_js_1.SetStateEnum.HAS_PRIMITIVES)).toBe(true);
});
(0, vitest_1.it)('should return false when set contains only objects', () => {
const s1 = new Set([{ id: 1 }, { id: 2 }]);
const s2 = new Set([[], [1, 2]]);
const s3 = new Set([() => { }, function () { }]);
(0, vitest_1.expect)((0, setState_js_1.setState)(s1, sets_js_1.SetStateEnum.HAS_PRIMITIVES)).toBe(false);
(0, vitest_1.expect)((0, setState_js_1.setState)(s2, sets_js_1.SetStateEnum.HAS_PRIMITIVES)).toBe(false);
(0, vitest_1.expect)((0, setState_js_1.setState)(s3, sets_js_1.SetStateEnum.HAS_PRIMITIVES)).toBe(false);
});
(0, vitest_1.it)('should return false for empty set', () => {
const empty = new Set();
(0, vitest_1.expect)((0, setState_js_1.setState)(empty, sets_js_1.SetStateEnum.HAS_PRIMITIVES)).toBe(false);
});
(0, vitest_1.it)('should work with string literals', () => {
const s = new Set([1, 2, 3]);
(0, vitest_1.expect)((0, setState_js_1.setState)(s, 'has_primitives')).toBe(true);
});
});
(0, vitest_1.describe)('HAS_OBJECTS', () => {
(0, vitest_1.it)('should return true when set contains object values', () => {
const s1 = new Set([{ id: 1 }, { id: 2 }]);
const s2 = new Set([[], [1, 2]]);
const s3 = new Set([() => { }, function () { }]);
const s4 = new Set([1, { id: 1 }]); // mixed
(0, vitest_1.expect)((0, setState_js_1.setState)(s1, sets_js_1.SetStateEnum.HAS_OBJECTS)).toBe(true);
(0, vitest_1.expect)((0, setState_js_1.setState)(s2, sets_js_1.SetStateEnum.HAS_OBJECTS)).toBe(true);
(0, vitest_1.expect)((0, setState_js_1.setState)(s3, sets_js_1.SetStateEnum.HAS_OBJECTS)).toBe(true);
(0, vitest_1.expect)((0, setState_js_1.setState)(s4, sets_js_1.SetStateEnum.HAS_OBJECTS)).toBe(true);
});
(0, vitest_1.it)('should return false when set contains only primitives', () => {
const s1 = new Set([1, 2, 3]);
const s2 = new Set(['hello', 'world']);
const s3 = new Set([true, false]);
const s4 = new Set([null, undefined]);
(0, vitest_1.expect)((0, setState_js_1.setState)(s1, sets_js_1.SetStateEnum.HAS_OBJECTS)).toBe(false);
(0, vitest_1.expect)((0, setState_js_1.setState)(s2, sets_js_1.SetStateEnum.HAS_OBJECTS)).toBe(false);
(0, vitest_1.expect)((0, setState_js_1.setState)(s3, sets_js_1.SetStateEnum.HAS_OBJECTS)).toBe(false);
(0, vitest_1.expect)((0, setState_js_1.setState)(s4, sets_js_1.SetStateEnum.HAS_OBJECTS)).toBe(false);
});
(0, vitest_1.it)('should return false for empty set', () => {
const empty = new Set();
(0, vitest_1.expect)((0, setState_js_1.setState)(empty, sets_js_1.SetStateEnum.HAS_OBJECTS)).toBe(false);
});
(0, vitest_1.it)('should work with string literals', () => {
const s = new Set([{ id: 1 }]);
(0, vitest_1.expect)((0, setState_js_1.setState)(s, 'has_objects')).toBe(true);
});
});
(0, vitest_1.describe)('error handling', () => {
(0, vitest_1.it)('should throw for unknown operator', () => {
const a = new Set();
// @ts-expect-error
(0, vitest_1.expect)(() => (0, setState_js_1.setState)(a, 'invalid_operator')).toThrow('Unknown SetState operation: invalid_operator');
});
});
});