feat(image-import): add inline levenshtein distance helper

This commit is contained in:
Kenearos 2026-05-12 00:15:39 +02:00
parent 93e6b32fe9
commit 773c286236
2 changed files with 59 additions and 0 deletions

View file

@ -716,6 +716,37 @@ runner.test('Parse: leerer Name wird verworfen', (t) => {
t.assertEqual(result.entries.length, 1, 'Nur gueltiger Name bleibt');
});
// ============================================================================
// ImageImporter Tests - Levenshtein (Feature A)
// ============================================================================
runner.test('Levenshtein: identische Strings = 0', (t) => {
const importer = new ImageImporter(null);
t.assertEqual(importer.levenshtein('max mustermann', 'max mustermann'), 0, 'Identisch');
});
runner.test('Levenshtein: leerer String', (t) => {
const importer = new ImageImporter(null);
t.assertEqual(importer.levenshtein('', 'abc'), 3, '0 vs 3 Zeichen');
t.assertEqual(importer.levenshtein('abc', ''), 3, '3 vs 0 Zeichen');
t.assertEqual(importer.levenshtein('', ''), 0, 'Beide leer');
});
runner.test('Levenshtein: 1 Substitution', (t) => {
const importer = new ImageImporter(null);
t.assertEqual(importer.levenshtein('abc', 'abd'), 1, '1 Subst');
});
runner.test('Levenshtein: 1 Insertion', (t) => {
const importer = new ImageImporter(null);
t.assertEqual(importer.levenshtein('max mustermann', 'max mustermannn'), 1, '1 zusaetzliches n');
});
runner.test('Levenshtein: 2 Distanz', (t) => {
const importer = new ImageImporter(null);
t.assertEqual(importer.levenshtein('mueller', 'mueler'), 1, 'ein l weniger');
});
// ============================================================================
// Display Functions
// ============================================================================