use nanometrics_agent::metrics::smart;

const SMART_JSON_OK: &str = r#"{
  "smart_status": {"passed": true},
  "temperature": {"current": 34},
  "ata_smart_attributes": {
    "table": [
      {"id": 5,   "name": "Reallocated_Sector_Ct", "raw": {"value": 0},    "value": 200},
      {"id": 9,   "name": "Power_On_Hours",         "raw": {"value": 4213}, "value": 77},
      {"id": 177, "name": "Wear_Leveling_Count",    "raw": {"value": 0},    "value": 98}
    ]
  }
}"#;

#[test]
fn test_parse_smart_json_ok() {
    let result = smart::parse_json(SMART_JSON_OK).unwrap();
    assert!(result.passed);
    assert_eq!(result.temperature, Some(34));
    assert_eq!(result.reallocated_sectors, Some(0));
    assert_eq!(result.power_on_hours, Some(4213));
    assert_eq!(result.wear_level, Some(98));
}

const SMART_JSON_FAIL: &str = r#"{
  "smart_status": {"passed": false},
  "temperature": {"current": 52},
  "ata_smart_attributes": {
    "table": [
      {"id": 5, "name": "Reallocated_Sector_Ct", "raw": {"value": 47}, "value": 150}
    ]
  }
}"#;

#[test]
fn test_parse_smart_json_fail() {
    let result = smart::parse_json(SMART_JSON_FAIL).unwrap();
    assert!(!result.passed);
    assert_eq!(result.reallocated_sectors, Some(47));
}

#[test]
fn test_smart_disponible() {
    let _ = smart::is_available();
}
