From f3ab5a7ecea9ad98928d041e296364b2cee9c678 Mon Sep 17 00:00:00 2001 From: soruh Date: Fri, 31 Jul 2026 03:45:22 +0200 Subject: [PATCH] Cover metadata-only Debug output --- src/tests.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/tests.rs b/src/tests.rs index f1d2a30..1c70c23 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -61,6 +61,37 @@ fn assert_guard_state(guard: &ContentGuard<'_, T>, expected_len: usize) { ); } +#[track_caller] +fn assert_debug_metadata(debug_output: &str, type_name: &str) { + assert!(debug_output.starts_with(type_name)); + assert!(debug_output.contains("layout")); + assert!(debug_output.contains("length")); + assert!(debug_output.contains("capacity")); + assert!(!debug_output.contains("vtable")); + assert!(!debug_output.contains("0x")); + assert!(!debug_output.contains("42")); +} + +#[test] +fn test_debug_implementations_expose_only_metadata() { + let mut erased = TypeErasedVec::new(vec![42_u32]); + assert_debug_metadata(&format!("{erased:?}"), "TypeErasedVec"); + + { + let guard = unsafe { erased.cast_type::() }; + assert_debug_metadata(&format!("{guard:?}"), "ContentGuard"); + } + + let send_erased = SendTypeErasedVec::new(vec![42_u32]); + assert_debug_metadata(&format!("{send_erased:?}"), "SendTypeErasedVec"); + + let send_sync_erased = SendSyncTypeErasedVec::new(vec![42_u32]); + assert_debug_metadata( + &format!("{send_sync_erased:?}"), + "SendSyncTypeErasedVec", + ); +} + #[test] fn test_sendable_is_send_sync() { fn assert_send() {}