//@ 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");
