diff --git a/test_suite/tests/test_identifier.rs b/test_suite/tests/test_identifier.rs index 59589fb3..1b2f10d2 100644 --- a/test_suite/tests/test_identifier.rs +++ b/test_suite/tests/test_identifier.rs @@ -3,7 +3,7 @@ #![allow(clippy::derive_partial_eq_without_eq)] use serde_derive::Deserialize; -use serde_test::{assert_de_tokens, Token}; +use serde_test::{assert_de_tokens, assert_de_tokens_error, Token}; mod variant_identifier { use super::*; @@ -24,6 +24,34 @@ mod variant_identifier { assert_de_tokens(&V::Aaa, &[Token::Str("Aaa")]); assert_de_tokens(&V::Aaa, &[Token::Bytes(b"Aaa")]); } + + #[test] + fn unknown() { + assert_de_tokens_error::( + &[Token::U8(42)], + "invalid value: integer `42`, expected variant index 0 <= i < 2", + ); + assert_de_tokens_error::( + &[Token::U16(42)], + "invalid value: integer `42`, expected variant index 0 <= i < 2", + ); + assert_de_tokens_error::( + &[Token::U32(42)], + "invalid value: integer `42`, expected variant index 0 <= i < 2", + ); + assert_de_tokens_error::( + &[Token::U64(42)], + "invalid value: integer `42`, expected variant index 0 <= i < 2", + ); + assert_de_tokens_error::( + &[Token::Str("Unknown")], + "unknown variant `Unknown`, expected `Aaa` or `Bbb`", + ); + assert_de_tokens_error::( + &[Token::Bytes(b"Unknown")], + "unknown variant `Unknown`, expected `Aaa` or `Bbb`", + ); + } } mod field_identifier { @@ -46,6 +74,34 @@ mod field_identifier { assert_de_tokens(&F::Aaa, &[Token::Bytes(b"aaa")]); } + #[test] + fn unknown() { + assert_de_tokens_error::( + &[Token::U8(42)], + "invalid value: integer `42`, expected field index 0 <= i < 2", + ); + assert_de_tokens_error::( + &[Token::U16(42)], + "invalid value: integer `42`, expected field index 0 <= i < 2", + ); + assert_de_tokens_error::( + &[Token::U32(42)], + "invalid value: integer `42`, expected field index 0 <= i < 2", + ); + assert_de_tokens_error::( + &[Token::U64(42)], + "invalid value: integer `42`, expected field index 0 <= i < 2", + ); + assert_de_tokens_error::( + &[Token::Str("unknown")], + "unknown field `unknown`, expected `aaa` or `bbb`", + ); + assert_de_tokens_error::( + &[Token::Bytes(b"unknown")], + "unknown field `unknown`, expected `aaa` or `bbb`", + ); + } + #[test] fn unit_fallthrough() { #[derive(Deserialize, Debug, PartialEq)]