Skip to content

Commit 98e155b

Browse files
committed
Add tests for Debug formatting
1 parent 060ddc3 commit 98e155b

File tree

4 files changed

+54
-10
lines changed

4 files changed

+54
-10
lines changed

objc2-foundation/src/array.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,7 @@ impl<T: INSObject, O: Ownership> Index<usize> for NSMutableArray<T, O> {
352352

353353
#[cfg(test)]
354354
mod tests {
355+
use alloc::format;
355356
use alloc::vec;
356357
use alloc::vec::Vec;
357358

@@ -405,6 +406,18 @@ mod tests {
405406
assert_ne!(array1, array2);
406407
}
407408

409+
#[test]
410+
#[ignore = "Output is different depending on OS version and runtime"]
411+
fn test_debug() {
412+
let obj = sample_number_array(3);
413+
let expected = r#"(
414+
"<00>",
415+
"<01>",
416+
"<02>"
417+
)"#;
418+
assert_eq!(format!("{:?}", obj), format!("{:?}", expected));
419+
}
420+
408421
#[test]
409422
fn test_get() {
410423
let array = sample_array(4);

objc2-foundation/src/object.rs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,8 @@ impl NSObject {
4646
#[cfg(test)]
4747
mod tests {
4848
use super::{INSObject, NSObject};
49-
use crate::{INSString, NSString};
49+
use crate::NSString;
5050
use alloc::format;
51-
use objc2::rc::autoreleasepool;
5251

5352
#[test]
5453
fn test_equality() {
@@ -66,16 +65,10 @@ mod tests {
6665
}
6766

6867
#[test]
69-
fn test_description() {
68+
fn test_debug() {
7069
let obj = NSObject::new();
71-
let description = obj.description();
7270
let expected = format!("<NSObject: {:p}>", &*obj);
73-
autoreleasepool(|pool| {
74-
assert_eq!(description.as_str(pool), &*expected);
75-
});
76-
77-
let expected = format!("\"<NSObject: {:p}>\"", &*obj);
78-
assert_eq!(format!("{:?}", obj), expected);
71+
assert_eq!(format!("{:?}", obj), format!("{:?}", expected));
7972
}
8073

8174
#[test]

objc2-foundation/src/string.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ impl fmt::Display for NSString {
122122
#[cfg(test)]
123123
mod tests {
124124
use super::*;
125+
use alloc::format;
125126

126127
#[cfg(gnustep)]
127128
#[test]
@@ -140,6 +141,14 @@ mod tests {
140141
assert_ne!(s1, s3);
141142
}
142143

144+
#[test]
145+
fn test_debug_display() {
146+
let s = "xyz123";
147+
let obj = NSString::from_str(s);
148+
assert_eq!(format!("{:?}", obj), format!("{:?}", s));
149+
assert_eq!(format!("{}", obj), format!("{}", s));
150+
}
151+
143152
#[test]
144153
fn test_empty() {
145154
let s1 = NSString::from_str("");

objc2-foundation/src/value.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ pub struct NSValueFloatNotEq;
9494

9595
#[cfg(test)]
9696
mod tests {
97+
use alloc::format;
98+
9799
use crate::{INSValue, NSRange, NSValue};
98100
use objc2::rc::{Id, Shared};
99101
use objc2::Encode;
@@ -126,6 +128,33 @@ mod tests {
126128
assert_ne!(val1, val2);
127129
}
128130

131+
#[test]
132+
#[ignore = "Output is different depending on OS version and runtime"]
133+
fn test_debug() {
134+
fn assert_debug(val: impl core::fmt::Debug, expected: &str) {
135+
assert_eq!(format!("{:?}", val), format!("{:?}", expected));
136+
}
137+
let val = NSValue::new(0xabu8);
138+
let expected = "<ab>";
139+
assert_debug(val, expected);
140+
141+
let val = NSValue::new(0x12i8);
142+
let expected = "<12>";
143+
assert_debug(val, expected);
144+
145+
let val = NSValue::new(0xdeadbeefu32);
146+
let expected = "<efbeadde>";
147+
assert_debug(val, expected);
148+
149+
// Very brittle
150+
let val = NSValue::new(1.0f32);
151+
let expected = &format!(
152+
"<{:08x}>",
153+
u32::from_le_bytes(1.0f32.to_le_bytes()).reverse_bits()
154+
);
155+
assert_debug(val, expected);
156+
}
157+
129158
#[test]
130159
fn test_value_nsrange() {
131160
let val = NSValue::new(NSRange::from(1..2));

0 commit comments

Comments
 (0)