nkl 0.0.5

Nuclear Kernel Library
Documentation
use std::error::Error;
use std::io::Cursor;

use nkl::data::ace::parse_ace_table;

const IZAW: [(u32, f64); 16] = [
    (1, 1.0),
    (2, 2.0),
    (3, 3.0),
    (4, 4.0),
    (5, 5.0),
    (6, 6.0),
    (7, 7.0),
    (8, 8.0),
    (9, 9.0),
    (10, 10.0),
    (11, 11.0),
    (12, 12.0),
    (13, 13.0),
    (14, 14.0),
    (15, 15.0),
    (16, 16.0),
];

const NXS: [usize; 16] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
const JXS: [usize; 32] = [
    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,
];
const XSS: [f64; 4] = [1.0, 2.0, 3.0, 4.0];

#[test]
fn version1() -> Result<(), Box<dyn Error>> {
    let ace = include_bytes!("data/version1.ace");
    let cursor = Cursor::new(ace);
    let table = parse_ace_table(cursor)?;
    assert_eq!(table.id(), "12345.12c");
    assert_eq!(table.atomic_weight_ratio(), 123.1234567);
    assert_eq!(table.temperature(), 1.23456E-12);
    assert_eq!(table.izaw(), IZAW);
    assert_eq!(table.nxs(), NXS);
    assert_eq!(table.jxs(), JXS);
    assert_eq!(table.xss(), XSS);
    Ok(())
}

#[test]
fn version2() -> Result<(), Box<dyn Error>> {
    let ace = include_bytes!("data/version2.ace");
    let cursor = Cursor::new(ace);
    let table = parse_ace_table(cursor)?;
    assert_eq!(table.id(), "1123123.123c");
    assert_eq!(table.atomic_weight_ratio(), 123.1234567);
    assert_eq!(table.temperature(), 1.23456E-12);
    assert_eq!(table.izaw(), IZAW);
    assert_eq!(table.nxs(), NXS);
    assert_eq!(table.jxs(), JXS);
    assert_eq!(table.xss(), XSS);
    Ok(())
}