blob: d8a77e63d5f95b15b93accbb5b9610a2a270f2ce [file] [log] [blame]
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/services/correction/levenshtein.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(LevenshteinTest);
});
}
@reflectiveTest
class LevenshteinTest {
void test_different_caseInsensitive() {
expect(levenshtein('Saturday', 'sunday', 5, caseSensitive: false), 3);
expect(levenshtein('SaturDay', 'sunday', 5, caseSensitive: false), 3);
}
void test_different_onThreshold() {
expect(levenshtein('', 'abcde', 5), 5);
expect(levenshtein('abcde', '', 5), 5);
}
void test_different_overThreshold() {
expect(levenshtein('', 'abcde', 2), LEVENSHTEIN_MAX);
expect(levenshtein('abcde', '', 2), LEVENSHTEIN_MAX);
}
void test_different_overThreshold_length() {
expect(levenshtein('a', 'abcdefgh', 5), LEVENSHTEIN_MAX);
expect(levenshtein('abcdefgh', 'a', 5), LEVENSHTEIN_MAX);
}
void test_different_underThreshold() {
expect(levenshtein('String', 'Stirng', 5), 2);
expect(levenshtein('kitten', 'sitting', 5), 3);
expect(levenshtein('Saturday', 'Sunday', 5), 3);
}
void test_negativeThreshold() {
expect(() {
levenshtein('', '', -5);
}, throwsArgumentError);
}
void test_null() {
expect(() {
levenshtein('', null, 5);
}, throwsArgumentError);
expect(() {
levenshtein(null, '', 5);
}, throwsArgumentError);
}
void test_same() {
expect(levenshtein('', '', 5), 0);
expect(levenshtein('test', 'test', 5), 0);
}
void test_same_caseInsensitive() {
expect(levenshtein('test', 'Test', 5, caseSensitive: false), 0);
}
}