#![cfg(all(feature = "serialize", feature = "deserialize"))]
use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize, Debug, PartialEq)]
struct CommentLikes {
    s1: Option<String>,
    s2: Option<String>,
}

#[test]
fn test_comment_like_string() -> anyhow::Result<()> {
    let yaml = r##"
        s1: #a
        s2: "#a"
    "##;

    let r: CommentLikes = serde_saphyr::from_str(yaml)?;
    assert_eq!(r.s1, None);
    assert_eq!(r.s2, Some("#a".to_string()));
    Ok(())
}

#[test]
fn test_comment_like_string_quoted() -> anyhow::Result<()> {
    let t = CommentLikes {
        s1: Some("# like comment".to_string()),
        s2: None,
    };
    let yaml = serde_saphyr::to_string(&t)?;
    assert!(
        yaml.contains("\"# like comment\""),
        "String starting from # must be quoted"
    );
    Ok(())
}
