aboutsummaryrefslogtreecommitdiff
path: root/azalea-brigadier/tests/suggestion
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2023-10-12 20:14:29 -0500
committermat <git@matdoes.dev>2023-10-12 20:14:29 -0500
commit38db231ea8fa0fb223e16637db0b6ec65b2b81ef (patch)
treef8f61b04ad0b498b85bffb133c51af1670a33ddf /azalea-brigadier/tests/suggestion
parentd5f424b8c2fba9b3283aef36fe9e1e051636614c (diff)
downloadazalea-drasl-38db231ea8fa0fb223e16637db0b6ec65b2b81ef.tar.xz
brigadier usages
Diffstat (limited to 'azalea-brigadier/tests/suggestion')
-rw-r--r--azalea-brigadier/tests/suggestion/mod.rs3
-rwxr-xr-xazalea-brigadier/tests/suggestion/suggestion_test.rs29
-rwxr-xr-xazalea-brigadier/tests/suggestion/suggestions_builder_test.rs133
-rwxr-xr-xazalea-brigadier/tests/suggestion/suggestions_test.rs54
4 files changed, 205 insertions, 14 deletions
diff --git a/azalea-brigadier/tests/suggestion/mod.rs b/azalea-brigadier/tests/suggestion/mod.rs
new file mode 100644
index 00000000..7b96af2b
--- /dev/null
+++ b/azalea-brigadier/tests/suggestion/mod.rs
@@ -0,0 +1,3 @@
+mod suggestion_test;
+mod suggestions_builder_test;
+mod suggestions_test; \ No newline at end of file
diff --git a/azalea-brigadier/tests/suggestion/suggestion_test.rs b/azalea-brigadier/tests/suggestion/suggestion_test.rs
index 9ba95807..e3c70c25 100755
--- a/azalea-brigadier/tests/suggestion/suggestion_test.rs
+++ b/azalea-brigadier/tests/suggestion/suggestion_test.rs
@@ -1,7 +1,12 @@
+use azalea_brigadier::{context::StringRange, suggestion::Suggestion};
+
#[test]
fn apply_insertation_start() {
let suggestion = Suggestion::new(StringRange::at(0), "And so I said: ");
- assert_eq!(suggestion.apply("Hello world!"), "And so I said: Hello world!");
+ assert_eq!(
+ suggestion.apply("Hello world!"),
+ "And so I said: Hello world!"
+ );
}
#[test]
@@ -49,23 +54,35 @@ fn expand_unchanged() {
#[test]
fn expand_left() {
let suggestion = Suggestion::new(StringRange::at(1), "oo");
- assert_eq!(suggestion.expand("f", StringRange::between(0, 1)), Suggestion::new(StringRange::between(0, 1), "foo"));
+ assert_eq!(
+ suggestion.expand("f", StringRange::between(0, 1)),
+ Suggestion::new(StringRange::between(0, 1), "foo")
+ );
}
#[test]
fn expand_right() {
let suggestion = Suggestion::new(StringRange::at(0), "minecraft:");
- assert_eq!(suggestion.expand("fish", StringRange::between(0, 4)), Suggestion::new(StringRange::between(0, 4), "minecraft:fish"));
+ assert_eq!(
+ suggestion.expand("fish", StringRange::between(0, 4)),
+ Suggestion::new(StringRange::between(0, 4), "minecraft:fish")
+ );
}
#[test]
fn expand_both() {
let suggestion = Suggestion::new(StringRange::at(11), "minecraft:");
- assert_eq!(suggestion.expand("give Steve fish_block", StringRange::between(5, 21)), Suggestion::new(StringRange::between(5, 21), "Steve minecraft:fish_block"));
+ assert_eq!(
+ suggestion.expand("give Steve fish_block", StringRange::between(5, 21)),
+ Suggestion::new(StringRange::between(5, 21), "Steve minecraft:fish_block")
+ );
}
#[test]
fn expand_replacement() {
let suggestion = Suggestion::new(StringRange::between(6, 11), "strangers");
- assert_eq!(suggestion.expand("Hello world!", StringRange::between(0, 12)), Suggestion::new(StringRange::between(0, 12), "Hello strangers!"));
-} \ No newline at end of file
+ assert_eq!(
+ suggestion.expand("Hello world!", StringRange::between(0, 12)),
+ Suggestion::new(StringRange::between(0, 12), "Hello strangers!")
+ );
+}
diff --git a/azalea-brigadier/tests/suggestion/suggestions_builder_test.rs b/azalea-brigadier/tests/suggestion/suggestions_builder_test.rs
index e69de29b..08ce65d4 100755
--- a/azalea-brigadier/tests/suggestion/suggestions_builder_test.rs
+++ b/azalea-brigadier/tests/suggestion/suggestions_builder_test.rs
@@ -0,0 +1,133 @@
+use std::collections::HashSet;
+
+use azalea_brigadier::{
+ context::StringRange,
+ suggestion::{Suggestion, SuggestionsBuilder},
+};
+
+#[test]
+fn suggest_appends() {
+ let builder = SuggestionsBuilder::new("Hello w", 6);
+ let result = builder.suggest("orld!").build();
+ assert_eq!(
+ result.list(),
+ vec![Suggestion::new(StringRange::between(6, 7), "orld!")]
+ );
+ assert_eq!(result.range(), StringRange::between(6, 7));
+ assert!(!result.is_empty());
+}
+
+#[test]
+fn suggest_replaces() {
+ let builder = SuggestionsBuilder::new("Hello w", 6);
+ let result = builder.suggest("everybody").build();
+ assert_eq!(
+ result.list(),
+ vec![Suggestion::new(StringRange::between(6, 7), "everybody")]
+ );
+ assert_eq!(result.range(), StringRange::between(6, 7));
+ assert!(!result.is_empty());
+}
+
+#[test]
+fn suggest_noop() {
+ let builder = SuggestionsBuilder::new("Hello w", 6);
+ let result = builder.suggest("w").build();
+ assert_eq!(result.list(), vec![]);
+ assert!(result.is_empty());
+}
+
+#[test]
+fn suggest_multiple() {
+ let builder = SuggestionsBuilder::new("Hello w", 6);
+ let result = builder
+ .suggest("world!")
+ .suggest("everybody")
+ .suggest("weekend")
+ .build();
+ assert_eq!(
+ result.list(),
+ vec![
+ Suggestion::new(StringRange::between(6, 7), "everybody"),
+ Suggestion::new(StringRange::between(6, 7), "weekend"),
+ Suggestion::new(StringRange::between(6, 7), "world!"),
+ ]
+ );
+ assert_eq!(result.range(), StringRange::between(6, 7));
+ assert!(!result.is_empty());
+}
+
+#[test]
+fn restart() {
+ let builder = SuggestionsBuilder::new("Hello w", 6);
+ let builder = builder.suggest("won't be included in restart");
+ let other = builder.restart();
+ assert_ne!(other, builder);
+ assert_eq!(other.input(), builder.input());
+ assert_eq!(other.start(), builder.start());
+ assert_eq!(other.remaining(), builder.remaining());
+}
+
+#[test]
+fn sort_alphabetical() {
+ let builder = SuggestionsBuilder::new("Hello w", 6);
+ let result = builder
+ .suggest("2")
+ .suggest("4")
+ .suggest("6")
+ .suggest("8")
+ .suggest("30")
+ .suggest("32")
+ .build();
+ let actual = result.list().iter().map(|s| s.text()).collect::<Vec<_>>();
+ assert_eq!(actual, vec!["2", "30", "32", "4", "6", "8"]);
+}
+
+#[test]
+fn sort_numerical() {
+ let builder = SuggestionsBuilder::new("Hello w", 6);
+ let result = builder
+ .suggest_integer(2)
+ .suggest_integer(4)
+ .suggest_integer(6)
+ .suggest_integer(8)
+ .suggest_integer(30)
+ .suggest_integer(32)
+ .build();
+ let actual = result.list().iter().map(|s| s.text()).collect::<Vec<_>>();
+ assert_eq!(actual, vec!["2", "4", "6", "8", "30", "32"]);
+}
+
+#[test]
+fn sort_mixed() {
+ let builder = SuggestionsBuilder::new("Hello w", 6);
+ let result = builder
+ .suggest("11")
+ .suggest("22")
+ .suggest("33")
+ .suggest("a")
+ .suggest("b")
+ .suggest("c")
+ .suggest_integer(2)
+ .suggest_integer(4)
+ .suggest_integer(6)
+ .suggest_integer(8)
+ .suggest_integer(30)
+ .suggest_integer(32)
+ .suggest("3a")
+ .suggest("a3")
+ .build();
+ let actual = result
+ .list()
+ .iter()
+ .map(|s| s.text())
+ .collect::<HashSet<_>>();
+ // mojang please
+ let expected = vec![
+ "11", "2", "22", "33", "3a", "4", "6", "8", "30", "32", "a", "a3", "b", "c",
+ ]
+ .into_iter()
+ .map(|s| s.to_string())
+ .collect::<HashSet<_>>();
+ assert_eq!(actual, expected);
+}
diff --git a/azalea-brigadier/tests/suggestion/suggestions_test.rs b/azalea-brigadier/tests/suggestion/suggestions_test.rs
index 28a8266d..12a2c73b 100755
--- a/azalea-brigadier/tests/suggestion/suggestions_test.rs
+++ b/azalea-brigadier/tests/suggestion/suggestions_test.rs
@@ -1,20 +1,58 @@
+use std::collections::HashSet;
+
+use azalea_brigadier::{
+ context::StringRange,
+ suggestion::{Suggestion, Suggestions},
+};
+
#[test]
fn merge_empty() {
- let merged = Suggestions::merge("foo b", vec![]);
+ 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", vec![suggestions]);
+ let suggestions = Suggestions::new(
+ StringRange::at(5),
+ vec![Suggestion::new(StringRange::at(5), "ar")],
+ );
+ let merged = Suggestions::merge("foo b", &[suggestions.clone()]);
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", vec![a, b]);
- assert_eq!(merged.get_list(), vec![Suggestion::new(StringRange::between(4, 5), "apple"), Suggestion::new(StringRange::between(4, 5), "ar"), Suggestion::new(StringRange::between(4, 5), "Az"), 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")]);
-} \ No newline at end of file
+ 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);
+}