diff --git a/test_suite/tests/test_de.rs b/test_suite/tests/test_de.rs index f4112428..8e79f1f1 100644 --- a/test_suite/tests/test_de.rs +++ b/test_suite/tests/test_de.rs @@ -6,6 +6,7 @@ use std::net; use std::path::PathBuf; use std::time::Duration; use std::default::Default; +use std::ffi::CString; extern crate serde; use serde::Deserialize; @@ -878,6 +879,11 @@ declare_tests! { Token::String("/usr/local/lib".to_owned()), ], } + test_cstring { + CString::new("abc").unwrap() => &[ + Token::Bytes(b"abc"), + ], + } } #[cfg(feature = "unstable")] @@ -995,4 +1001,16 @@ declare_error_tests! { ], Error::Message("invalid length 1, expected an array of length 3".into()), } + test_cstring_internal_null { + &[ + Token::Bytes(b"a\0c"), + ], + Error::Message("unexpected NULL at byte 1".into()), + } + test_cstring_internal_null_end { + &[ + Token::Bytes(b"ac\0"), + ], + Error::Message("unexpected NULL at byte 2".into()), + } } diff --git a/test_suite/tests/test_ser.rs b/test_suite/tests/test_ser.rs index e1f298ea..72ed3f0c 100644 --- a/test_suite/tests/test_ser.rs +++ b/test_suite/tests/test_ser.rs @@ -6,6 +6,7 @@ use std::net; use std::path::{Path, PathBuf}; use std::str; use std::time::Duration; +use std::ffi::CString; extern crate serde; @@ -389,6 +390,16 @@ declare_tests! { Token::Str("/usr/local/lib"), ], } + test_cstring { + CString::new("abc").unwrap() => &[ + Token::Bytes(b"abc"), + ], + } + test_cstr { + (&*CString::new("abc").unwrap()) => &[ + Token::Bytes(b"abc"), + ], + } }