use sunocore::models::downbeats::{Downbeats, DownbeatsState};

#[test]
fn deserialize_downbeats_example() {
    let data = include_str!("data/downbeats_example.json");
    let downbeats: Downbeats = serde_json::from_str(data).expect("valid Downbeats json");

    assert_eq!(downbeats.state, DownbeatsState::Complete);
    assert!(downbeats.downbeats.is_some());
    assert!(downbeats.raw_downbeats.is_some());

    let db = downbeats.downbeats.unwrap();
    assert_eq!(db.len(), 12);
    // First downbeat should be around 0.04 seconds at beat 4
    assert!((db[0][0] - 0.04031).abs() < 0.001);
    assert_eq!(db[0][1], 4.0);

    let raw_db = downbeats.raw_downbeats.unwrap();
    assert_eq!(raw_db.len(), 12);
}
