#![cfg(feature = "serde")]
#![doc(hidden)]
use std::convert::TryFrom;
use typeid_prefix::TypeIdPrefix;
#[test]
fn test_serialize_typeidprefix() {
let prefix = TypeIdPrefix::try_from("valid_prefix").unwrap();
let serialized = serde_json::to_string(&prefix).unwrap();
assert_eq!(serialized, "\"valid_prefix\"");
}
#[test]
fn test_deserialize_valid_typeidprefix() {
let json = "\"valid_prefix\"";
let prefix: TypeIdPrefix = serde_json::from_str(json).unwrap();
assert_eq!(prefix.as_str(), "valid_prefix");
}
#[test]
fn test_deserialize_invalid_typeidprefix() {
let long_string = format!("\"{}\"", "a".repeat(64)); let invalid_cases = vec![
"\"UPPERCASE\"", "\"_starts_with_underscore\"", "\"ends_with_underscore_\"", "\"contains-hyphen\"", &long_string, ];
for invalid_json in invalid_cases {
let result: Result<TypeIdPrefix, _> = serde_json::from_str(invalid_json);
assert!(
result.is_err(),
"Should fail to deserialize: {invalid_json}"
);
}
}
#[test]
fn test_roundtrip_serialization() {
let original = TypeIdPrefix::try_from("test_prefix").unwrap();
let serialized = serde_json::to_string(&original).unwrap();
let deserialized: TypeIdPrefix = serde_json::from_str(&serialized).unwrap();
assert_eq!(original, deserialized);
}
#[test]
fn test_empty_string() {
let json = "\"\"";
let result: Result<TypeIdPrefix, _> = serde_json::from_str(json);
assert!(result.is_err(), "Should fail to deserialize empty string");
}