helena 0.1.0

Core types and component interfaces for helena, a latent data-to-waveform generation platform.
Documentation
use super::*;

#[test]
fn sample_grid_reports_diffusion_signature() {
    let generator = MockGenerator {
        cond_weight: 1.0,
        seed_weight: 1.0,
    };
    let d = sample_grid(
        &generator,
        &[cond(0.0), cond(10.0)],
        &[Seed(1), Seed(2), Seed(3)],
        &params(),
    )
    .unwrap();
    assert!(d.within_condition() > 0.0);
    assert!(d.between_condition() > 0.0);
    assert_eq!(d.condition_count(), 2);
    assert_eq!(d.sample_count(), 6);
}

#[test]
fn sample_grid_reports_l2_collapse_signature() {
    let generator = MockGenerator {
        cond_weight: 1.0,
        seed_weight: 0.0,
    };
    let d = sample_grid(
        &generator,
        &[cond(1.0), cond(5.0)],
        &[Seed(7), Seed(8), Seed(9)],
        &params(),
    )
    .unwrap();
    assert_eq!(d.within_condition(), 0.0);
    assert!(d.between_condition() > 0.0);
}

#[test]
fn sample_grid_propagates_generator_error() {
    let err = sample_grid(&FailingGenerator, &[cond(0.0)], &[Seed(1)], &params());
    assert!(matches!(err, Err(Error::Validation(_))));
}

#[test]
fn sample_grid_rejects_empty_grid_spec() {
    let generator = MockGenerator {
        cond_weight: 1.0,
        seed_weight: 1.0,
    };
    assert!(matches!(
        sample_grid(&generator, &[], &[Seed(1)], &params()),
        Err(Error::Validation(_))
    ));
    assert!(matches!(
        sample_grid(&generator, &[cond(0.0)], &[], &params()),
        Err(Error::Validation(_))
    ));
}