suffix_array_rust/
lib.rs

1#[cfg(test)]
2use std::str;
3mod array;
4
5#[test]
6fn distinct_sub_count() {
7    let s = String::from("azaza");
8    let sa = array::new(s.as_str());
9    assert_eq!(9, sa.distinct_sub_count());
10}
11
12#[test]
13fn distinct_sub() {
14    let s = String::from("azaza");
15    let sa = array::new(s.as_str());
16    let subs = sa.distinct_sub();
17    let real_subs = ["a", "az", "aza", "azaz", "azaza", "z", "za", "zaz", "zaza"];
18
19    assert_eq!(real_subs.len(), subs.len());
20
21    for i in 0..subs.len() {
22        let rs = real_subs[i].as_bytes();
23
24        for k in 0..subs[i].len() {
25            assert_eq!(rs[k], subs[i][k]);
26        }
27    }
28}
29
30#[test]
31fn sub_count() {
32    let s = String::from("azaza");
33    let sa = array::new(s.as_str());
34    assert_eq!(15, sa.sub_count());
35}
36
37#[test]
38fn longest_repeated_substr() {
39    let s = String::from("abracadabra");
40    let sa = array::new(s.as_str());
41    let lrs = sa.longest_repeated_substr();
42
43    assert_eq!(1, lrs.len());
44    assert_eq!("abra", str::from_utf8(&lrs[0]).unwrap());
45}