use textwrap::word_separators::{AsciiSpace, WordSeparator};
use textwrap::word_splitters::{HyphenSplitter, NoHyphenation, WordSplitter};
use textwrap::wrap_algorithms::{FirstFit, WrapAlgorithm};
use textwrap::Options;
fn type_name<T: ?Sized>(_val: &T) -> String {
std::any::type_name::<T>().replace("alloc::boxed::Box", "Box")
}
#[test]
#[cfg(not(feature = "smawk"))]
#[cfg(not(feature = "unicode-linebreak"))]
fn static_hyphensplitter() {
let options = Options::new(10);
assert_eq!(
type_name(&options),
format!(
"textwrap::Options<{}, {}, {}>",
"textwrap::wrap_algorithms::FirstFit",
"textwrap::word_separators::AsciiSpace",
"textwrap::word_splitters::HyphenSplitter"
)
);
let options: Options<_, _, HyphenSplitter> = Options::new(10);
assert_eq!(
type_name(&options),
format!(
"textwrap::Options<{}, {}, {}>",
"textwrap::wrap_algorithms::FirstFit",
"textwrap::word_separators::AsciiSpace",
"textwrap::word_splitters::HyphenSplitter"
)
);
let options: Options<_, _, _> = Options::new(10);
assert_eq!(
type_name(&options),
format!(
"textwrap::Options<{}, {}, {}>",
"textwrap::wrap_algorithms::FirstFit",
"textwrap::word_separators::AsciiSpace",
"textwrap::word_splitters::HyphenSplitter"
)
);
}
#[test]
fn box_static_nohyphenation() {
let options = Options::new(10)
.wrap_algorithm(Box::new(FirstFit))
.word_splitter(Box::new(NoHyphenation))
.word_separator(Box::new(AsciiSpace));
assert_eq!(
type_name(&options),
format!(
"textwrap::Options<{}, {}, {}>",
"Box<textwrap::wrap_algorithms::FirstFit>",
"Box<textwrap::word_separators::AsciiSpace>",
"Box<textwrap::word_splitters::NoHyphenation>"
)
);
}
#[test]
fn box_dyn_wordsplitter() {
let options = Options::new(10)
.wrap_algorithm(Box::new(FirstFit) as Box<dyn WrapAlgorithm>)
.word_splitter(Box::new(HyphenSplitter) as Box<dyn WordSplitter>)
.word_separator(Box::new(AsciiSpace) as Box<dyn WordSeparator>);
assert_eq!(
type_name(&options),
format!(
"textwrap::Options<{}, {}, {}>",
"Box<dyn textwrap::wrap_algorithms::WrapAlgorithm>",
"Box<dyn textwrap::word_separators::WordSeparator>",
"Box<dyn textwrap::word_splitters::WordSplitter>"
)
);
}