]> git.lizzy.rs Git - rust.git/blob - src/librustc_ast/util/lev_distance/tests.rs
Merge branch 'master' into feature/incorporate-tracing
[rust.git] / src / librustc_ast / util / 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(|i| from_u32(i)).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::with_default_session_globals;
25     with_default_session_globals(|| {
26         let input = vec![Symbol::intern("aaab"), Symbol::intern("aaabc")];
27         assert_eq!(
28             find_best_match_for_name(input.iter(), Symbol::intern("aaaa"), None),
29             Some(Symbol::intern("aaab"))
30         );
31
32         assert_eq!(
33             find_best_match_for_name(input.iter(), Symbol::intern("1111111111"), None),
34             None
35         );
36
37         let input = vec![Symbol::intern("aAAA")];
38         assert_eq!(
39             find_best_match_for_name(input.iter(), Symbol::intern("AAAA"), None),
40             Some(Symbol::intern("aAAA"))
41         );
42
43         let input = vec![Symbol::intern("AAAA")];
44         // Returns None because `lev_distance > max_dist / 3`
45         assert_eq!(find_best_match_for_name(input.iter(), Symbol::intern("aaaa"), None), None);
46
47         let input = vec![Symbol::intern("AAAA")];
48         assert_eq!(
49             find_best_match_for_name(input.iter(), Symbol::intern("aaaa"), Some(4)),
50             Some(Symbol::intern("AAAA"))
51         );
52
53         let input = vec![Symbol::intern("a_longer_variable_name")];
54         assert_eq!(
55             find_best_match_for_name(input.iter(), Symbol::intern("a_variable_longer_name"), None),
56             Some(Symbol::intern("a_longer_variable_name"))
57         );
58     })
59 }