#![cfg(feature = "serde")]
use sashite_sin::Identifier;
use serde_test::{assert_de_tokens_error, assert_tokens, Token};
#[test]
fn serializes_and_deserializes_as_token_string() {
for token in ["W", "w", "C", "c", "J", "S", "A", "z"] {
let id = Identifier::parse(token).unwrap();
assert_tokens(&id, &[Token::Str(token)]);
}
}
#[test]
fn invalid_strings_fail_to_deserialize() {
assert_de_tokens_error::<Identifier>(&[Token::Str("")], "empty SIN token");
assert_de_tokens_error::<Identifier>(
&[Token::Str("WW")],
"SIN token longer than one character",
);
assert_de_tokens_error::<Identifier>(
&[Token::Str("1")],
"SIN token must contain exactly one ASCII letter",
);
}