use rustygraph::{TimeSeries, VisibilityGraph, FeatureSet, BuiltinFeature};
#[test]
fn test_basic_pipeline() {
let series = TimeSeries::from_raw(vec![1.0, 3.0, 2.0, 4.0]).unwrap();
assert_eq!(series.len(), 4);
assert!(!series.is_empty());
let _builder = VisibilityGraph::from_series(&series);
}
#[test]
fn test_pipeline_with_features() {
let series = TimeSeries::from_raw(vec![1.0, 2.0, 3.0]).unwrap();
let features = FeatureSet::new()
.add_builtin(BuiltinFeature::DeltaForward);
assert_eq!(features.len(), 1);
let _builder = VisibilityGraph::from_series(&series)
.with_features(features);
}
#[test]
fn test_pipeline_with_missing_data() {
let result = TimeSeries::new(
vec![0.0, 1.0, 2.0, 3.0],
vec![Some(1.0), None, Some(3.0), Some(2.0)]
);
assert!(result.is_ok());
let series = result.unwrap();
assert_eq!(series.len(), 4);
}
#[test]
fn test_weighted_graph_pipeline() {
use rustygraph::algorithms::{visibility_weighted, VisibilityType};
let series = TimeSeries::from_raw(vec![1.0, 3.0, 2.0, 4.0]).unwrap();
let edges = visibility_weighted(&series, VisibilityType::Natural, |i, j, _, _| {
(j - i) as f64
});
assert!(edges.len() > 0);
}
#[test]
fn test_multiple_features() {
let features: FeatureSet<f64> = FeatureSet::new()
.add_builtin(BuiltinFeature::DeltaForward)
.add_builtin(BuiltinFeature::DeltaBackward)
.add_builtin(BuiltinFeature::LocalSlope);
assert_eq!(features.len(), 3);
}
#[test]
fn test_custom_feature_function() {
let features: FeatureSet<f64> = FeatureSet::new()
.add_function("custom", |series, idx| {
series[idx].map(|v: f64| v * 2.0)
});
assert_eq!(features.len(), 1);
}