Regression suite · 43 cases
Pressure on the hard edges.
Live mutation, per-registration one-shot state, reentrant emits, safe object-like event names, snapshot isolation, frozen handlers, and thrown errors.
Complete Regression inventory
43- __proto__ is a safe event name
- constructor is a safe event name
- toString is a safe event name
- hasOwnProperty is a safe event name
- numeric-looking event names remain strings
- the wildcard symbol description remains an exact typed event
- off compares the remove-all handler sentinel strictly
- emitting the literal wildcard type invokes wildcard handlers once
- handlers added during typed dispatch run in that emit
- typed handlers added by a wildcard run in that emit
- wildcard handlers added during wildcard dispatch run in that emit
- handlers removed during dispatch do not run later in that dispatch
- a wildcard can remove a typed handler before the typed phase
- reset during typed dispatch leaves the active array running
- reset from a wildcard finishes that array but prevents typed dispatch
- once is removed before a reentrant emit
- persistent reentrant emits preserve nested registration order
- wildcard once is removed before a reentrant emit
- a throwing once handler remains removed
- a throwing once handler is absent from the next list snapshot
- a throwing persistent handler remains registered
- a thrown wildcard handler stops typed dispatch
- off with a nonmatching function preserves the type
- off ignores an invalid handler when the type is absent
- mutating a list array does not change the registry
- deleting a list property does not change the registry
- mutating a wildcard list snapshot does not change the registry
- frozen handler functions can be registered
- nonextensible handler functions can be registered
- duplicate once registrations each run once
- the same handler can be wildcard-once and typed-persistent
- registration does not write the old once symbol onto handlers
- the same handler can be once and persistent in one bucket
- the same handler has independent state across instances
- typed once removal does not skip the next registration
- wildcard once removal does not skip the next registration
- a sole once handler can add a handler to its live bucket
- off all during dispatch leaves the active array running
- stale once cleanup cannot delete a fresh same-name bucket
- an earlier once remains consumed when a later handler throws
- persistent self-removal preserves shifted-array iteration
- wildcard-only emits remain chainable
- reset instances accept new registrations immediately