about summary refs log tree commit diff
path: root/tests/ui/darwin-objc/darwin-objc-class.rs
blob: 851149d872683e91ceaeb5d194ffda9e62bfc003 (plain)
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
// Test that `objc::class!` returns the same thing as `objc_lookUpClass`.

//@ edition: 2024
//@ only-apple
//@ run-pass

#![feature(darwin_objc)]

use std::ffi::c_char;
use std::os::darwin::objc;

#[link(name = "Foundation", kind = "framework")]
unsafe extern "C" {}

#[link(name = "objc")]
unsafe extern "C" {
    fn objc_lookUpClass(methname: *const c_char) -> objc::Class;
}

fn get_object_class() -> objc::Class {
    objc::class!("NSObject")
}

fn lookup_object_class() -> objc::Class {
    unsafe { objc_lookUpClass(c"NSObject".as_ptr()) }
}

fn get_string_class() -> objc::Class {
    objc::class!("NSString")
}

fn lookup_string_class() -> objc::Class {
    unsafe { objc_lookUpClass(c"NSString".as_ptr()) }
}

fn main() {
    assert_eq!(get_object_class(), lookup_object_class());
    assert_eq!(get_string_class(), lookup_string_class());
}