UNPKG

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
"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'); }); }); });