1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
use objc2::{extern_class, ClassType};
use objc2_foundation::NSObject;
use static_assertions::assert_impl_all;
#[test]
fn allow_deprecated() {
#![deny(deprecated)]
// Test allow propagates to impls
extern_class!(
#[unsafe(super(NSObject))]
#[deprecated]
#[allow(deprecated)]
struct AllowDeprecated;
);
}
#[test]
fn cfg() {
// Test `cfg`. We use `debug_assertions` here because it's something that we
// know our CI already tests.
extern_class!(
#[unsafe(super(NSObject))]
#[cfg(debug_assertions)]
#[name = "NSObject"]
struct OnlyOnDebugAssertions;
);
#[cfg(debug_assertions)]
let _ = OnlyOnDebugAssertions::class();
extern_class!(
#[unsafe(super(NSObject))]
#[cfg(not(debug_assertions))]
#[name = "NSObject"]
struct NeverOnDebugAssertions;
);
#[cfg(not(debug_assertions))]
let _ = NeverOnDebugAssertions::class();
}
#[test]
fn derive() {
extern_class!(
#[rustfmt::skip]
#[unsafe(super(NSObject))]
#[derive(PartialEq)]
#[derive()]
#[derive(Eq,)]
#[derive()]
#[derive(Debug, Hash,)]
struct Derive;
);
assert_impl_all!(Derive: PartialEq, Eq, core::hash::Hash, core::fmt::Debug);
}
|