//! # Validation Helpers Test //! //! Quick test to verify validation helpers work correctly mod common; use anyhow::Result; use common::validation_helpers::*; #[tokio::test] async fn test_validation_helpers_smoke_test() -> Result<()> { println!("\nšŸ” Validation Helpers Smoke Test"); println!("════════════════════════════════════════════════════════"); // Test 1: Create validator configurations let validator = create_test_validator_config(true, true, true); println!("āœ… Created standard validator config"); let validator_threshold = create_test_validator_with_threshold(0.30); println!("āœ… Created validator with custom threshold"); let validator_timestamps = create_test_validator_with_timestamps(60); println!("āœ… Created validator with timestamp checks"); // Test 2: Generate clean data let clean_bars = generate_clean_data(50); assert_eq!(clean_bars.len(), 50); println!("āœ… Generated 50 clean bars"); // Validate clean data passes let result = validator.validate(&clean_bars)?; assert_validation_passed(&result); println!("āœ… Clean data passes validation"); // Test 3: Generate anomalous data let spike_bars = generate_anomalous_data(50, AnomalyType::PriceSpikes); assert_eq!(spike_bars.len(), 50); println!("āœ… Generated bars with price spikes"); // Validate anomalous data fails let result = validator.validate(&spike_bars)?; assert_validation_failed(&result); assert_has_error_category(&result, "continuity"); println!("āœ… Price spikes detected correctly"); // Test 4: Generate integrity violations let bad_bars = generate_anomalous_data(50, AnomalyType::IntegrityViolations); let result = validator.validate(&bad_bars)?; assert_validation_failed(&result); assert_has_error_category(&result, "integrity"); println!("āœ… Integrity violations detected correctly"); // Test 5: Generate clean indicators let indicators = generate_clean_indicators(50); let result = validator.validate_indicators(&indicators)?; assert_validation_passed(&result); println!("āœ… Clean indicators pass validation"); // Test 6: Generate anomalous indicators let bad_indicators = generate_anomalous_indicators(50, IndicatorAnomalyType::RsiOutOfRange); let result = validator.validate_indicators(&bad_indicators)?; assert_validation_failed(&result); println!("āœ… Invalid RSI detected correctly"); // Test 7: Test builder pattern let custom_bars = TestBarBuilder::new() .count(30) .base_price(150.0) .volatility(0.05) .trend(0.001) .build(); assert_eq!(custom_bars.len(), 30); println!("āœ… TestBarBuilder works correctly"); // Test 8: Test data corrector let corrector = create_test_corrector(); let corrected = corrector.correct_price_spikes(&spike_bars, 0.20)?; println!("āœ… Data corrector works correctly"); println!("\nāœ… All validation helper tests passed!"); Ok(()) }