diff options
| author | mat <git@matdoes.dev> | 2023-10-12 20:14:29 -0500 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2023-10-12 20:14:29 -0500 |
| commit | 38db231ea8fa0fb223e16637db0b6ec65b2b81ef (patch) | |
| tree | f8f61b04ad0b498b85bffb133c51af1670a33ddf /azalea-brigadier/tests/suggestion | |
| parent | d5f424b8c2fba9b3283aef36fe9e1e051636614c (diff) | |
| download | azalea-drasl-38db231ea8fa0fb223e16637db0b6ec65b2b81ef.tar.xz | |
brigadier usages
Diffstat (limited to 'azalea-brigadier/tests/suggestion')
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); +} |
