llmgrep 3.5.0

Smart grep over Magellan code maps with schema-aligned JSON output
Documentation
use super::*;

#[test]
fn test_symbol_set_validation_valid() {
    let symbol_set = SymbolSet {
        symbol_ids: vec![
            "abc123def456789012345678901234ab".to_string(),
            "0123456789abcdef0123456789abcdef".to_string(),
            "ffffffffffffffffffffffffffffffff".to_string(),
        ],
    };
    assert!(symbol_set.validate().is_ok());
    assert_eq!(symbol_set.len(), 3);
    assert!(!symbol_set.is_empty());
}

#[test]
fn test_symbol_set_validation_invalid_length() {
    let symbol_set = SymbolSet {
        symbol_ids: vec!["abc123".to_string()],
    };
    assert!(symbol_set.validate().is_err());
}

#[test]
fn test_symbol_set_validation_invalid_chars() {
    let symbol_set = SymbolSet {
        symbol_ids: vec!["abc123def456789012345678901234g!".to_string()],
    };
    assert!(symbol_set.validate().is_err());
}

#[test]
fn test_symbol_set_empty() {
    let symbol_set = SymbolSet { symbol_ids: vec![] };
    assert!(symbol_set.validate().is_ok());
    assert_eq!(symbol_set.len(), 0);
    assert!(symbol_set.is_empty());
}

#[test]
fn test_symbol_set_json_deserialize() {
    let json = r#"{"symbol_ids": ["abc123def456789012345678901234ab"]}"#;
    let symbol_set: SymbolSet = serde_json::from_str(json).unwrap();
    assert_eq!(symbol_set.symbol_ids.len(), 1);
    assert_eq!(symbol_set.symbol_ids[0], "abc123def456789012345678901234ab");
}

#[test]
fn test_symbol_set_json_serialize() {
    let symbol_set = SymbolSet {
        symbol_ids: vec!["abc123def456789012345678901234ab".to_string()],
    };
    let json = serde_json::to_string(&symbol_set).unwrap();
    assert!(json.contains("symbol_ids"));
    assert!(json.contains("abc123def456789012345678901234ab"));
}