use objc2::{extern_class, ClassType};
use objc2_foundation::NSObject;
use static_assertions::assert_impl_all;
#[test]
fn allow_deprecated() {
#![deny(deprecated)]
extern_class!(
#[unsafe(super(NSObject))]
#[deprecated]
#[allow(deprecated)]
struct AllowDeprecated;
);
}
#[test]
fn cfg() {
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);
}