| 279 | * Assert that only specific keys appear in messages (for incremental processing verification) |
| 280 | */ |
| 281 | export function assertOnlyKeysAffected<K, V>( |
| 282 | testName: string, |
| 283 | messages: Array<[[K, V], number]>, |
| 284 | expectedKeys: Array<K>, |
| 285 | ) { |
| 286 | const actualKeys = extractMessageKeys(messages) |
| 287 | const expectedKeySet = new Set(expectedKeys) |
| 288 | |
| 289 | // Check that all actual keys are expected |
| 290 | Array.from(actualKeys).forEach((key) => { |
| 291 | if (!expectedKeySet.has(key)) { |
| 292 | throw new Error(`${testName}: Unexpected key ${key} in messages`) |
| 293 | } |
| 294 | }) |
| 295 | |
| 296 | if (LOG_RESULTS) { |
| 297 | console.log( |
| 298 | `${testName}: ✅ Only expected keys affected: ${Array.from(actualKeys).join(`, `)}`, |
| 299 | ) |
| 300 | } |
| 301 | } |
| 302 | |
| 303 | export const compareFractionalIndex = ( |
| 304 | r1: [unknown, [unknown, string]], |