// SPDX-License-Identifier: MIT OR Apache-2.0+ mod util; use serde_json_helpers::serde_enum_string; test_enum_variant!(TestEnum, ()); #[test] fn can_deserialize_without_transform() { assert_eq!( serde_json::from_str::("\"Variant\"").unwrap(), TestEnum::Variant ); assert_eq!( serde_json::from_str::("\"ExampleVariant\"").unwrap(), TestEnum::ExampleVariant ); assert_eq!( serde_json::from_str::("\"Example2\"").unwrap(), TestEnum::Example2 ); } test_enum_variant!(TestEnumPrepended, (prepend_enum_name)); #[test] fn can_deserialize_prepended_without_transform() { assert_eq!( serde_json::from_str::("\"TestEnumPrependedVariant\"").unwrap(), TestEnumPrepended::Variant ); assert_eq!( serde_json::from_str::("\"TestEnumPrependedExampleVariant\"").unwrap(), TestEnumPrepended::ExampleVariant ); assert_eq!( serde_json::from_str::("\"TestEnumPrependedExample2\"").unwrap(), TestEnumPrepended::Example2 ); } test_enum_variant!(TestEnumLowercase, (transform = "lowercase")); #[test] fn can_deserialize_lowercase() { assert_eq!( serde_json::from_str::("\"variant\"").unwrap(), TestEnumLowercase::Variant ); assert_eq!( serde_json::from_str::("\"examplevariant\"").unwrap(), TestEnumLowercase::ExampleVariant ); assert_eq!( serde_json::from_str::("\"example2\"").unwrap(), TestEnumLowercase::Example2 ); } test_enum_variant!(TestEnumUppercase, (transform = "UPPERCASE")); #[test] fn can_deserialize_uppercase() { assert_eq!( serde_json::from_str::("\"VARIANT\"").unwrap(), TestEnumUppercase::Variant ); assert_eq!( serde_json::from_str::("\"EXAMPLEVARIANT\"").unwrap(), TestEnumUppercase::ExampleVariant ); assert_eq!( serde_json::from_str::("\"EXAMPLE2\"").unwrap(), TestEnumUppercase::Example2 ); } test_enum_variant!(TestEnumSnakeCase, (transform = "snake_case")); #[test] fn can_serialize_snake_case() { assert_eq!( serde_json::from_str::("\"variant\"").unwrap(), TestEnumSnakeCase::Variant ); assert_eq!( serde_json::from_str::("\"example_variant\"").unwrap(), TestEnumSnakeCase::ExampleVariant ); assert_eq!( serde_json::from_str::("\"example2\"").unwrap(), TestEnumSnakeCase::Example2 ); } test_enum_variant!( TestEnumScreamingSnakeCase, (transform = "SCREAMING_SNAKE_CASE") ); #[test] fn can_serialize_screaming_snake_case() { assert_eq!( serde_json::from_str::("\"VARIANT\"").unwrap(), TestEnumScreamingSnakeCase::Variant ); assert_eq!( serde_json::from_str::("\"EXAMPLE_VARIANT\"").unwrap(), TestEnumScreamingSnakeCase::ExampleVariant ); assert_eq!( serde_json::from_str::("\"EXAMPLE2\"").unwrap(), TestEnumScreamingSnakeCase::Example2 ); } test_enum_variant!(TestEnumKebabCase, (transform = "kebab-case")); #[test] fn can_serialize_kebab_case() { assert_eq!( serde_json::from_str::("\"variant\"").unwrap(), TestEnumKebabCase::Variant ); assert_eq!( serde_json::from_str::("\"example-variant\"").unwrap(), TestEnumKebabCase::ExampleVariant ); assert_eq!( serde_json::from_str::("\"example2\"").unwrap(), TestEnumKebabCase::Example2 ); } test_enum_variant!( TestEnumScreamingKebabCase, (transform = "SCREAMING-KEBAB-CASE") ); #[test] fn can_serialize_screaming_kebab_case() { assert_eq!( serde_json::from_str::("\"VARIANT\"").unwrap(), TestEnumScreamingKebabCase::Variant ); assert_eq!( serde_json::from_str::("\"EXAMPLE-VARIANT\"").unwrap(), TestEnumScreamingKebabCase::ExampleVariant ); assert_eq!( serde_json::from_str::("\"EXAMPLE2\"").unwrap(), TestEnumScreamingKebabCase::Example2 ); } test_enum_variant!( TestEnumPrependedSnakeCase, (transform = "snake_case", prepend_enum_name) ); #[test] fn can_serialize_prepended_snake_case() { assert_eq!( serde_json::from_str::( "\"test_enum_prepended_snake_case_variant\"" ) .unwrap(), TestEnumPrependedSnakeCase::Variant ); assert_eq!( serde_json::from_str::( "\"test_enum_prepended_snake_case_example_variant\"" ) .unwrap(), TestEnumPrependedSnakeCase::ExampleVariant ); assert_eq!( serde_json::from_str::( "\"test_enum_prepended_snake_case_example2\"" ) .unwrap(), TestEnumPrependedSnakeCase::Example2 ); }