From 8cf5d43e993d4f32f0b82ce61a2d7da4528657f8 Mon Sep 17 00:00:00 2001 From: Louis DEVIE Date: Fri, 13 Mar 2026 21:37:25 +0100 Subject: [PATCH] tests for hasAny, hasAll, maximum and minimum on Sets --- node/tests/flagsets/collection.test.ts | 58 ++++++++++++++++++++++++++ node/tests/flagsets/number.test.ts | 3 +- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/node/tests/flagsets/collection.test.ts b/node/tests/flagsets/collection.test.ts index 6359ab5..2c4f3f6 100644 --- a/node/tests/flagsets/collection.test.ts +++ b/node/tests/flagsets/collection.test.ts @@ -76,6 +76,34 @@ describe(CollectionFlagSet, () => { expect(flags.isSuperset(set('C', 'D'), set('B'))).toBe(false) }) + test('hasAny', () => { + const flags = createCollectionFlagSet([ + { value: 12, as: 'a' }, + { value: 45, as: 'b', requires: ['a'] }, + { value: 78, as: 'c' }, + ]) + + expect(flags.hasAny(set(), set())).toBe(false) + expect(flags.hasAny(set(12, 45, 78), set())).toBe(false) + expect(flags.hasAny(set(12, 45, 78), set(12))).toBe(true) + expect(flags.hasAny(set(12), set(12, 78))).toBe(true) + expect(flags.hasAny(set(45, 78), set(45))).toBe(false) + }) + + test('hasAll', () => { + const flags = createCollectionFlagSet([ + { value: 12, as: 'a' }, + { value: 45, as: 'b', requires: ['a'] }, + { value: 78, as: 'c' }, + ]) + + expect(flags.hasAll(set(), set())).toBe(true) + expect(flags.hasAll(set(12, 45, 78), set())).toBe(true) + expect(flags.hasAll(set(12, 45, 78), set(12))).toBe(true) + expect(flags.hasAll(set(12), set(12, 78))).toBe(false) + expect(flags.hasAll(set(45, 78), set(45))).toBe(false) + }) + test('enumerate', () => { const flags = createCollectionFlagSet([]) @@ -83,4 +111,34 @@ describe(CollectionFlagSet, () => { expect([...flags.enumerate(set('A'))]).toEqual(['A']) expect([...flags.enumerate(set('A', 'B', 'C'))]).toEqual(['A', 'B', 'C']) }) + + test('maximum', () => { + const flags = createCollectionFlagSet([ + { value: 12, as: 'a' }, + { value: 45, as: 'b', requires: ['a'] }, + { value: 78, as: 'c', requires: ['b'] }, + ]) + + expect(flags.maximum(set())).toEqual(set()) + expect(flags.maximum(set(12))).toEqual(set(12)) + expect(flags.maximum(set(45))).toEqual(set(12, 45)) + expect(flags.maximum(set(78))).toEqual(set(12, 45, 78)) + expect(flags.maximum(set(99))).toEqual(set()) + }) + + test('minimum', () => { + const flags = createCollectionFlagSet([ + { value: 12, as: 'a' }, + { value: 45, as: 'b', requires: ['a'] }, + { value: 78, as: 'c', requires: ['b'] }, + ]) + + expect(flags.minimum(set())).toEqual(set()) + expect(flags.minimum(set(12))).toEqual(set(12)) + expect(flags.minimum(set(45))).toEqual(set()) + expect(flags.minimum(set(12, 45))).toEqual(set(12, 45)) + expect(flags.minimum(set(12, 78))).toEqual(set(12)) + expect(flags.minimum(set(12, 45, 78))).toEqual(set(12, 45, 78)) + expect(flags.minimum(set(99))).toEqual(set()) + }) }) diff --git a/node/tests/flagsets/number.test.ts b/node/tests/flagsets/number.test.ts index 156f780..02e9071 100644 --- a/node/tests/flagsets/number.test.ts +++ b/node/tests/flagsets/number.test.ts @@ -1,6 +1,7 @@ -import { BitFlags, BitFlagSet, createBitFlagSet } from '~' import { describe, expect, test } from 'vitest' +import { BitFlags, BitFlagSet, createBitFlagSet } from '~' + describe(BitFlagSet, () => { test('none', () => { const flags = createBitFlagSet([])