#![cfg(feature = "serde")] use emojis::{Emoji, Group, SkinTone, UnicodeVersion}; use serde::{Deserialize, Serialize}; #[derive(Debug, PartialEq, Eq, Deserialize, Serialize)] struct Test { skin_tone: SkinTone, group: Group, emoji: &'static Emoji, version: UnicodeVersion, } #[test] fn test_serialize_roundtrip_json() { let test = Test { emoji: emojis::get("🚀").unwrap(), version: UnicodeVersion::new(13, 0), skin_tone: SkinTone::Default, group: Group::Activities, }; let serialized = serde_json::to_string_pretty(&test).unwrap(); assert_eq!( serialized, r#"{ "skin_tone": "Default", "group": "Activities", "emoji": "🚀", "version": { "major": 13, "minor": 0 } }"# ); let deserialized: Test = serde_json::from_str(&serialized).unwrap(); assert_eq!(deserialized, test); } #[test] fn test_serialize_roundtrip_toml() { let test = Test { emoji: emojis::get("🚀").unwrap(), skin_tone: SkinTone::Default, group: Group::Activities, version: UnicodeVersion::new(13, 0), }; let serialized = toml::to_string(&test).unwrap(); assert_eq!( serialized, r#"skin_tone = "Default" group = "Activities" emoji = "🚀" [version] major = 13 minor = 0 "# ); let deserialized: Test = toml::from_str(&serialized).unwrap(); assert_eq!(deserialized, test); } #[test] fn emoji_deserialize_invalid() { let err = serde_json::from_str::(r#"{"emoji":"invalid"}"#).unwrap_err(); assert_eq!(err.to_string(), "invalid emoji at line 1 column 18"); }