1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use std::io::{BufWriter, Write};
use tempfile::{NamedTempFile, TempPath};
#[macro_export]
macro_rules! check_chrom {
    (
        $iter:expr, $($start_end_val:expr), *
    ) => {
        {
            $(
                let start = $start_end_val.0;
                let end = $start_end_val.1;
                let val = $start_end_val.2;
                assert_eq!(
                    $iter.next(),
                    Some((&I64Interval::new(start, end), &val))
                );
            )*
        }
        assert_eq!(
            $iter.next(),
            None
        );
    };
}

pub fn create_temp_bed(content: &str) -> std::io::Result<TempPath> {
    let file = NamedTempFile::new().unwrap();
    {
        let mut writer = BufWriter::new(&file);
        writer.write_fmt(format_args!("{}", content))?;
    }
    Ok(file.into_temp_path())
}