2026-04-28 08:11:36 +02:00
|
|
|
import { assertEquals } from '@std/assert'
|
|
|
|
|
import { join } from '@std/path'
|
|
|
|
|
import { readCache, writeCache, type CacheState } from '../src/core/cache.ts'
|
|
|
|
|
|
|
|
|
|
Deno.test('readCache: file fehlt -> undefined', async () => {
|
|
|
|
|
const dir = await Deno.makeTempDir()
|
|
|
|
|
const path = join(dir, 'cache.json')
|
|
|
|
|
const cache = await readCache(path)
|
|
|
|
|
assertEquals(cache, undefined)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
Deno.test('writeCache + readCache: round-trip', async () => {
|
|
|
|
|
const dir = await Deno.makeTempDir()
|
|
|
|
|
const path = join(dir, 'cache.json')
|
|
|
|
|
const state: CacheState = { lastKnownGoodCount: 27, deletedCoords: ['30023:P:dead'] }
|
|
|
|
|
await writeCache(path, state)
|
|
|
|
|
const out = await readCache(path)
|
|
|
|
|
assertEquals(out, state)
|
|
|
|
|
})
|
2026-04-28 08:20:51 +02:00
|
|
|
|
|
|
|
|
Deno.test('readCache wirft bei korruptem cache-file', async () => {
|
|
|
|
|
const dir = await Deno.makeTempDir()
|
|
|
|
|
const path = join(dir, 'cache.json')
|
|
|
|
|
await Deno.writeTextFile(path, '{"unsinn": 42}')
|
|
|
|
|
let threw = false
|
|
|
|
|
try {
|
|
|
|
|
await readCache(path)
|
|
|
|
|
} catch (err) {
|
|
|
|
|
threw = true
|
|
|
|
|
if (!(err instanceof Error)) throw err
|
|
|
|
|
if (!err.message.includes('Cache-File')) throw err
|
|
|
|
|
}
|
|
|
|
|
if (!threw) throw new Error('readCache haette werfen sollen')
|
|
|
|
|
})
|