diff options
Diffstat (limited to 'tests/ui/custom_test_frameworks/dynamic.rs')
-rw-r--r-- | tests/ui/custom_test_frameworks/dynamic.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/ui/custom_test_frameworks/dynamic.rs b/tests/ui/custom_test_frameworks/dynamic.rs new file mode 100644 index 000000000..6766ec542 --- /dev/null +++ b/tests/ui/custom_test_frameworks/dynamic.rs @@ -0,0 +1,35 @@ +// run-pass +// aux-build:dynamic_runner.rs +// compile-flags:--test +#![feature(custom_test_frameworks)] +#![test_runner(dynamic_runner::runner)] + +extern crate dynamic_runner; + +pub struct AllFoo(&'static str); +struct IsFoo(String); + +impl dynamic_runner::Testable for AllFoo { + fn name(&self) -> String { + String::from(self.0) + } + + fn subtests(&self) -> Vec<Box<dyn dynamic_runner::Testable>> { + self.0.split(" ").map(|word| + Box::new(IsFoo(word.into())) as Box<dyn dynamic_runner::Testable> + ).collect() + } +} + +impl dynamic_runner::Testable for IsFoo { + fn name(&self) -> String { + self.0.clone() + } + + fn run(&self) -> bool { + self.0 == "foo" + } +} + +#[test_case] +const TEST_2: AllFoo = AllFoo("foo foo"); |