Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
This commit is contained in:
83
examples/vibecast-7sense/tests/lib.rs
Normal file
83
examples/vibecast-7sense/tests/lib.rs
Normal file
@@ -0,0 +1,83 @@
|
||||
//! Test library for 7sense bioacoustics platform integration tests
|
||||
//!
|
||||
//! This library provides test fixtures, mocks, and integration tests for
|
||||
//! all six bounded contexts of the 7sense system:
|
||||
//!
|
||||
//! - **Audio Ingestion Context**: Audio file loading, resampling, segmentation
|
||||
//! - **Embedding Context**: Perch 2.0 model integration, vector generation
|
||||
//! - **Vector Space Context**: HNSW index operations, k-NN search
|
||||
//! - **Analysis Context**: HDBSCAN clustering, motif detection, entropy
|
||||
//! - **Interpretation Context**: RAB evidence packs, citation validation
|
||||
//! - **API Context**: REST endpoints, GraphQL, rate limiting
|
||||
//!
|
||||
//! ## Test Organization
|
||||
//!
|
||||
//! - `fixtures/` - Test data factories and builders
|
||||
//! - `mocks/` - Mock implementations of repositories and services
|
||||
//! - `integration/` - Integration tests organized by bounded context
|
||||
//!
|
||||
//! ## Usage
|
||||
//!
|
||||
//! Run all tests with:
|
||||
//! ```bash
|
||||
//! cargo test -p vibecast-tests
|
||||
//! ```
|
||||
//!
|
||||
//! Run specific context tests:
|
||||
//! ```bash
|
||||
//! cargo test -p vibecast-tests --test audio_test
|
||||
//! cargo test -p vibecast-tests --test vector_test
|
||||
//! ```
|
||||
|
||||
pub mod fixtures;
|
||||
pub mod mocks;
|
||||
pub mod integration;
|
||||
|
||||
// Re-export commonly used types for convenience
|
||||
pub use fixtures::*;
|
||||
pub use mocks::*;
|
||||
pub use integration::{IntegrationTestContext, TestConfig};
|
||||
|
||||
/// Version of the test suite
|
||||
pub const TEST_VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||
|
||||
/// Target recall@10 for HNSW index tests (from ADR requirements)
|
||||
pub const TARGET_RECALL_AT_10: f32 = 0.95;
|
||||
|
||||
/// Perch 2.0 embedding dimensions
|
||||
pub const PERCH_EMBEDDING_DIMS: usize = 1536;
|
||||
|
||||
/// Required sample rate for audio processing
|
||||
pub const REQUIRED_SAMPLE_RATE: u32 = 32000;
|
||||
|
||||
/// Mel spectrogram dimensions (frames x mel bins)
|
||||
pub const MEL_FRAMES: usize = 500;
|
||||
pub const MEL_BINS: usize = 128;
|
||||
|
||||
/// HNSW default parameters
|
||||
pub const HNSW_M: usize = 16;
|
||||
pub const HNSW_EF_CONSTRUCTION: usize = 200;
|
||||
pub const HNSW_EF_SEARCH: usize = 100;
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_constants_match_requirements() {
|
||||
// Verify test constants match ADR requirements
|
||||
assert_eq!(PERCH_EMBEDDING_DIMS, 1536, "Perch 2.0 uses 1536-D embeddings");
|
||||
assert_eq!(REQUIRED_SAMPLE_RATE, 32000, "Perch 2.0 requires 32kHz audio");
|
||||
assert_eq!(MEL_FRAMES, 500, "Spectrogram should have 500 frames");
|
||||
assert_eq!(MEL_BINS, 128, "Spectrogram should have 128 mel bins");
|
||||
assert!(TARGET_RECALL_AT_10 >= 0.95, "Recall@10 must be >= 0.95");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_hnsw_params_match_defaults() {
|
||||
let config = HnswConfig::default();
|
||||
assert_eq!(config.m, HNSW_M);
|
||||
assert_eq!(config.ef_construction, HNSW_EF_CONSTRUCTION);
|
||||
assert_eq!(config.ef_search, HNSW_EF_SEARCH);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user