tests for hasAny, hasAll, maximum and minimum on Sets

This commit is contained in:
2026-03-13 21:37:25 +01:00
parent 0a06d238de
commit 8cf5d43e99
2 changed files with 60 additions and 1 deletions

View File

@@ -76,6 +76,34 @@ describe(CollectionFlagSet, () => {
expect(flags.isSuperset(set('C', 'D'), set('B'))).toBe(false) 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', () => { test('enumerate', () => {
const flags = createCollectionFlagSet<string>([]) const flags = createCollectionFlagSet<string>([])
@@ -83,4 +111,34 @@ describe(CollectionFlagSet, () => {
expect([...flags.enumerate(set('A'))]).toEqual(['A']) expect([...flags.enumerate(set('A'))]).toEqual(['A'])
expect([...flags.enumerate(set('A', 'B', 'C'))]).toEqual(['A', 'B', 'C']) 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())
})
}) })

View File

@@ -1,6 +1,7 @@
import { BitFlags, BitFlagSet, createBitFlagSet } from '~'
import { describe, expect, test } from 'vitest' import { describe, expect, test } from 'vitest'
import { BitFlags, BitFlagSet, createBitFlagSet } from '~'
describe(BitFlagSet, () => { describe(BitFlagSet, () => {
test('none', () => { test('none', () => {
const flags = createBitFlagSet([]) const flags = createBitFlagSet([])