use std::collections::HashSet;

use rayon::prelude::*;
use rayon::*;

#[test]
fn named_threads() {
    ThreadPoolBuilder::new()
        .thread_name(|i| format!("hello-name-test-{}", i))
        .build_global()
        .unwrap();

    const N: usize = 10000;

    let thread_names = (0..N)
        .into_par_iter()
        .flat_map(|_| ::std::thread::current().name().map(str::to_owned))
        .collect::<HashSet<String>>();

    let all_contains_name = thread_names
        .iter()
        .all(|name| name.starts_with("hello-name-test-"));
    assert!(all_contains_name);
}
