]> git.proxmox.com Git - rustc.git/blob - compiler/rustc_span/src/lev_distance/tests.rs
New upstream version 1.55.0+dfsg1
[rustc.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[..]), 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), 1);
15 assert_eq!(lev_distance(b, a), 1);
16 assert_eq!(lev_distance(a, c), 2);
17 assert_eq!(lev_distance(c, a), 2);
18 assert_eq!(lev_distance(b, c), 1);
19 assert_eq!(lev_distance(c, b), 1);
20 }
21
22 #[test]
23 fn test_find_best_match_for_name() {
24 use crate::create_default_session_globals_then;
25 create_default_session_globals_then(|| {
26 let input = vec![Symbol::intern("aaab"), Symbol::intern("aaabc")];
27 assert_eq!(
28 find_best_match_for_name(&input, Symbol::intern("aaaa"), None),
29 Some(Symbol::intern("aaab"))
30 );
31
32 assert_eq!(find_best_match_for_name(&input, Symbol::intern("1111111111"), None), None);
33
34 let input = vec![Symbol::intern("aAAA")];
35 assert_eq!(
36 find_best_match_for_name(&input, Symbol::intern("AAAA"), None),
37 Some(Symbol::intern("aAAA"))
38 );
39
40 let input = vec![Symbol::intern("AAAA")];
41 // Returns None because `lev_distance > max_dist / 3`
42 assert_eq!(find_best_match_for_name(&input, Symbol::intern("aaaa"), None), None);
43
44 let input = vec![Symbol::intern("AAAA")];
45 assert_eq!(
46 find_best_match_for_name(&input, Symbol::intern("aaaa"), Some(4)),
47 Some(Symbol::intern("AAAA"))
48 );
49
50 let input = vec![Symbol::intern("a_longer_variable_name")];
51 assert_eq!(
52 find_best_match_for_name(&input, Symbol::intern("a_variable_longer_name"), None),
53 Some(Symbol::intern("a_longer_variable_name"))
54 );
55 })
56 }