#![forbid(unsafe_code)]
#![allow(dead_code)]
#![cfg_attr(not(feature = "std"), no_std)]
extern crate alloc;
pub mod core;
pub mod tracker;
pub mod edit;
pub mod prelude;
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(42, 42);
}
#[cfg(feature = "import_xm")]
#[test]
fn load_empty_xm() {
let data = include_bytes!("../examples/empty.xm");
let module = crate::core::module::Module::load_xm(data);
assert!(
module.is_ok(),
"Failed to load empty.xm: {:?}",
module.err()
);
}
#[cfg(feature = "import_xm")]
#[test]
fn load_note_xm() {
let data = include_bytes!("../examples/note.xm");
let module = crate::core::module::Module::load_xm(data).expect("Failed to load note.xm");
assert!(
!module.instrument.is_empty(),
"Module should have instruments"
);
assert!(
!module.timeline_map.entries.is_empty(),
"timeline_map should be populated"
);
assert!(!module.tracks.is_empty(), "tracks should be populated");
module
.verify_layers_consistent()
.expect("DAW layer should be consistent after import");
}
#[cfg(feature = "import_sid")]
#[test]
fn load_sid_commando_has_consistent_layer() {
let sid = crate::tracker::import::sid::sid_module::SidModule::get_sid_commando();
let modules = sid.to_modules(false);
assert!(
!modules.is_empty(),
"SID should produce at least one Module"
);
for (i, m) in modules.iter().enumerate() {
assert!(
!m.tracks.is_empty(),
"SID module {} should have tracks after build_timeline_layer",
i
);
m.verify_layers_consistent()
.unwrap_or_else(|e| panic!("SID module {} inconsistent: {:?}", i, e));
}
}
#[cfg(feature = "import_xm")]
#[test]
fn load_empty_xm_has_consistent_layer() {
let data = include_bytes!("../examples/empty.xm");
let module = crate::core::module::Module::load_xm(data).expect("load");
module
.verify_layers_consistent()
.expect("DAW layer should be consistent on empty.xm");
}
#[cfg(feature = "import_xm")]
#[test]
fn load_xi_instrument() {
let data = include_bytes!("../examples/instr.xi");
let xmi = crate::tracker::import::xm::xi_instrument::XiInstrument::load(data);
assert!(xmi.is_ok(), "Failed to load instr.xi: {:?}", xmi.err());
}
#[cfg(feature = "import_xm")]
#[test]
fn autodetect_xm() {
let data = include_bytes!("../examples/note.xm");
let module = crate::core::module::Module::load(data);
assert!(module.is_ok(), "Autodetect should find XM format");
}
}