#[test]
#[cfg(feature = "linalg")]
fn feature_linalg_module_accessible() {
let sz = std::mem::size_of::<scirs2::linalg::LinalgError>();
assert!(sz > 0, "LinalgError size must be > 0");
}
#[test]
#[cfg(feature = "stats")]
fn feature_stats_module_accessible() {
let sz = std::mem::size_of::<scirs2::stats::StatsError>();
assert!(sz > 0, "StatsError size must be > 0");
}
#[test]
#[cfg(feature = "fft")]
fn feature_fft_module_accessible() {
let sz = std::mem::size_of::<scirs2::fft::FFTError>();
assert!(sz > 0, "FFTError size must be > 0");
}
#[test]
#[cfg(feature = "optimize")]
fn feature_optimize_module_accessible() {
let sz = std::mem::size_of::<scirs2::optimize::OptimizeError>();
assert!(sz > 0, "OptimizeError size must be > 0");
}
#[test]
#[cfg(feature = "datasets")]
fn feature_datasets_module_accessible() {
let f = scirs2::datasets::load_iris;
let result = f();
assert!(result.is_ok(), "load_iris() must succeed");
}
#[test]
#[cfg(feature = "signal")]
fn feature_signal_module_accessible() {
let sz = std::mem::size_of::<scirs2::signal::SignalError>();
assert!(sz > 0, "SignalError size must be > 0");
}
#[test]
#[cfg(feature = "sparse")]
fn feature_sparse_module_accessible() {
let sz = std::mem::size_of::<scirs2::sparse::SparseError>();
assert!(sz > 0, "SparseError size must be > 0");
}
#[test]
#[cfg(feature = "distributed")]
fn feature_distributed_resolves() {
use scirs2_core::distributed::par_iter::par_map;
let data: Vec<i32> = vec![1, 2, 3, 4, 5];
let doubled = par_map(&data, |x| x * 2, None);
assert_eq!(doubled, vec![2, 4, 6, 8, 10]);
}
#[test]
#[cfg(feature = "wasm")]
fn feature_wasm_module_accessible() {
let sz = std::mem::size_of::<scirs2::wasm::error::WasmError>();
assert!(sz > 0, "WasmError size must be > 0");
}
#[test]
#[cfg(feature = "benchmarks")]
fn feature_benchmarks_implies_datasets() {
let result = scirs2::datasets::load_iris();
assert!(
result.is_ok(),
"load_iris() must succeed under benchmarks feature"
);
}
#[test]
fn compile_fail_harness() {
let compile_fail_dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
.join("tests")
.join("compile_fail");
if !compile_fail_dir.exists() {
return;
}
let rs_files: Vec<_> = std::fs::read_dir(&compile_fail_dir)
.map(|rd| {
rd.filter_map(|entry| {
let e = entry.ok()?;
let path = e.path();
if path.extension().is_some_and(|ext| ext == "rs") {
Some(path)
} else {
None
}
})
.collect()
})
.unwrap_or_default();
if rs_files.is_empty() {
return;
}
let t = trybuild::TestCases::new();
t.compile_fail(compile_fail_dir.join("*.rs"));
}