fitrs 0.5.0

Parse FITS file in pure rust
Documentation
extern crate fitrs;

use std::process::Command;

use fitrs::{Fits, Hdu};

#[test]
fn write_single_hdu_file() {
    let data = (0..20)
        .map(|i| (0..20).map(move |j| i + j))
        .flatten()
        .collect();
    let primary_hdu = Hdu::new(&[20, 20], data);
    let _ = Fits::create("out.fits", primary_hdu).expect("created!");

    let output = Command::new("verify/verify.py")
        .arg("out.fits")
        .output()
        .expect("Failed to execute verify command");

    assert_eq!(output.stdout, vec![], "No standard output");
    assert_eq!(output.stderr, vec![], "No error output");
    assert!(output.status.success(), "Exit with success");
}

#[test]
fn write_multiple_hdu_file() {
    let data: Vec<i32> = (0..20)
        .map(|i| (0..20).map(move |j| i + j))
        .flatten()
        .collect();
    let primary_hdu = Hdu::new(&[20, 20], data.clone());
    let mut fits = Fits::create("out.fits", primary_hdu).expect("created!");

    let secondary_hdu = Hdu::new(&[20, 20], data);
    fits.push(secondary_hdu).expect("Pushed");

    let output = Command::new("verify/verify.py")
        .arg("out.fits")
        .output()
        .expect("Failed to execute verify command");

    assert_eq!(output.stdout, vec![], "No standard output");
    assert_eq!(output.stderr, vec![], "No error output");
    assert!(output.status.success(), "Exit with success");
}

#[test]
fn write_file_with_long_string() {
    let mut primary_hdu = Hdu::new(&[1], vec![0]);
    primary_hdu.insert(
        "TEST",
        "This is a very long string value that is continued over more than one keyword.",
    );
    let _ = Fits::create("out.fits", primary_hdu).expect("created!");

    let output = Command::new("verify/verify.py")
        .arg("out.fits")
        .output()
        .expect("Failed to execute verify command");

    assert_eq!(output.stdout, vec![], "No standard output");
    assert_eq!(output.stderr, vec![], "No error output");
    assert!(output.status.success(), "Exit with success");
}

#[test]
fn write_file_with_empty_hdu() {
    let primary_hdu = Hdu::empty();
    let _ = Fits::create("out.fits", primary_hdu).expect("created!");

    let output = Command::new("verify/verify.py")
        .arg("out.fits")
        .output()
        .expect("Failed to execute verify command");

    assert_eq!(output.stdout, vec![], "No standard output");
    assert_eq!(output.stderr, vec![], "No error output");
    assert!(output.status.success(), "Exit with success");
}