Add NSThread unit test for name: and setName: on win32

This commit is contained in:
hmelder 2024-04-18 23:22:12 -07:00 committed by Hugo Melder
parent 10eaba4f13
commit 80c3d66677

View file

@ -0,0 +1,44 @@
#import "ObjectTesting.h"
#include <winerror.h>
#import <Foundation/NSThread.h>
#if defined(_WIN32) && (NTDDI_VERSION >= NTDDI_WIN10_RS1)
#include <processthreadsapi.h>
#else
#include <pthread.h>
#endif
int main(void)
{
NSAutoreleasePool *arp = [NSAutoreleasePool new];
// SetThreadDescription() was added in Windows 10 1607 (Redstone 1)
#if defined(_WIN32) && (NTDDI_VERSION >= NTDDI_WIN10_RS1)
PWSTR nativeThreadName = NULL;
HANDLE current = GetCurrentThread();
HRESULT hr = SetThreadDescription(current, L"Test");
PASS(SUCCEEDED(hr), "SetThreadDescription was successful");
NSString *name = [[[NSThread alloc] init] name];
PASS(name != nil, "-[NSThread name] returns a valid string");
NSLog(@"Name: %@", name);
PASS([name isEqualToString: @"Test"], "Thread name is correct");
[name release];
[[NSThread currentThread] setName: @"Test2"];
name = [[NSThread currentThread] name];
PASS(name != nil, "-[NSThread name] returns a valid string");
PASS([name isEqualToString: @"Test2"], "-[NSThread name] returns a valid string after setName");
hr = GetThreadDescription(current, &nativeThreadName);
PASS(SUCCEEDED(hr), "SetThreadDescription was successful");
name = [NSString stringWithCharacters: (void *)nativeThreadName length: wcslen(nativeThreadName)];
PASS([name isEqualToString: @"Test2"], "-[NSThread setName] successfully updated thread name");
LocalFree(nativeThreadName);
#else
#endif
return 0;
}