aboutsummaryrefslogtreecommitdiff
path: root/azalea-brigadier/tests/suggestion/suggestions_test.rs
blob: 0da9febcf723c3814f5194907aa7e1c31b6e427c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
use std::collections::HashSet;

use azalea_brigadier::{
    context::StringRange,
    suggestion::{Suggestion, Suggestions},
};

#[test]
fn merge_empty() {
    let merged = Suggestions::merge("foo b", &[]);
    assert!(merged.is_empty());
}

#[test]
fn merge_single() {
    let suggestions = Suggestions::new(
        StringRange::at(5),
        vec![Suggestion::new(StringRange::at(5), "ar")],
    );
    let merged = Suggestions::merge("foo b", std::slice::from_ref(&suggestions));
    assert_eq!(merged, suggestions);
}

#[test]
fn merge_multiple() {
    let a = Suggestions::new(
        StringRange::at(5),
        vec![
            Suggestion::new(StringRange::at(5), "ar"),
            Suggestion::new(StringRange::at(5), "az"),
            Suggestion::new(StringRange::at(5), "Az"),
        ],
    );
    let b = Suggestions::new(
        StringRange::between(4, 5),
        vec![
            Suggestion::new(StringRange::between(4, 5), "foo"),
            Suggestion::new(StringRange::between(4, 5), "qux"),
            Suggestion::new(StringRange::between(4, 5), "apple"),
            Suggestion::new(StringRange::between(4, 5), "Bar"),
        ],
    );
    let merged = Suggestions::merge("foo b", &[a, b]);

    let actual = merged.list().iter().cloned().collect::<HashSet<_>>();
    let expected = vec![
        Suggestion::new(StringRange::between(4, 5), "apple"),
        Suggestion::new(StringRange::between(4, 5), "bar"),
        Suggestion::new(StringRange::between(4, 5), "Bar"),
        Suggestion::new(StringRange::between(4, 5), "baz"),
        Suggestion::new(StringRange::between(4, 5), "bAz"),
        Suggestion::new(StringRange::between(4, 5), "foo"),
        Suggestion::new(StringRange::between(4, 5), "qux"),
    ]
    .into_iter()
    .collect::<HashSet<_>>();
    assert_eq!(actual, expected);
}