]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_span/src/lev_distance/tests.rs
Auto merge of #93561 - Amanieu:more-unwind-abi, r=nagisa
[rust.git] / compiler / rustc_span / src / lev_distance / tests.rs
1 use super::*;
2
3 #[test]
4 fn test_lev_distance() {
5     use std::char::{from_u32, MAX};
6     // Test bytelength agnosticity
7     for c in (0..MAX as u32).filter_map(from_u32).map(|i| i.to_string()) {
8         assert_eq!(lev_distance(&c[..], &c[..], usize::MAX), Some(0));
9     }
10
11     let a = "\nMäry häd ä little lämb\n\nLittle lämb\n";
12     let b = "\nMary häd ä little lämb\n\nLittle lämb\n";
13     let c = "Mary häd ä little lämb\n\nLittle lämb\n";
14     assert_eq!(lev_distance(a, b, usize::MAX), Some(1));
15     assert_eq!(lev_distance(b, a, usize::MAX), Some(1));
16     assert_eq!(lev_distance(a, c, usize::MAX), Some(2));
17     assert_eq!(lev_distance(c, a, usize::MAX), Some(2));
18     assert_eq!(lev_distance(b, c, usize::MAX), Some(1));
19     assert_eq!(lev_distance(c, b, usize::MAX), Some(1));
20 }
21
22 #[test]
23 fn test_lev_distance_limit() {
24     assert_eq!(lev_distance("abc", "abcd", 1), Some(1));
25     assert_eq!(lev_distance("abc", "abcd", 0), None);
26     assert_eq!(lev_distance("abc", "xyz", 3), Some(3));
27     assert_eq!(lev_distance("abc", "xyz", 2), None);
28 }
29
30 #[test]
31 fn test_find_best_match_for_name() {
32     use crate::create_default_session_globals_then;
33     create_default_session_globals_then(|| {
34         let input = vec![Symbol::intern("aaab"), Symbol::intern("aaabc")];
35         assert_eq!(
36             find_best_match_for_name(&input, Symbol::intern("aaaa"), None),
37             Some(Symbol::intern("aaab"))
38         );
39
40         assert_eq!(find_best_match_for_name(&input, Symbol::intern("1111111111"), None), None);
41
42         let input = vec![Symbol::intern("AAAA")];
43         assert_eq!(
44             find_best_match_for_name(&input, Symbol::intern("aaaa"), None),
45             Some(Symbol::intern("AAAA"))
46         );
47
48         let input = vec![Symbol::intern("AAAA")];
49         assert_eq!(
50             find_best_match_for_name(&input, Symbol::intern("aaaa"), Some(4)),
51             Some(Symbol::intern("AAAA"))
52         );
53
54         let input = vec![Symbol::intern("a_longer_variable_name")];
55         assert_eq!(
56             find_best_match_for_name(&input, Symbol::intern("a_variable_longer_name"), None),
57             Some(Symbol::intern("a_longer_variable_name"))
58         );
59     })
60 }