mirror of
https://review.haiku-os.org/buildtools
synced 2025-02-12 00:37:41 +01:00
65 lines
1.5 KiB
D
65 lines
1.5 KiB
D
import lib;
|
|
|
|
void testEH()
|
|
{
|
|
bool passed;
|
|
try
|
|
lib.throwException();
|
|
catch (Exception e)
|
|
passed = true;
|
|
assert(passed); passed = false;
|
|
|
|
assert(lib.collectException({throw new Exception(null);}) !is null);
|
|
assert(lib.collectException({lib.throwException();}) !is null);
|
|
}
|
|
|
|
void testGC()
|
|
{
|
|
import core.memory;
|
|
lib.alloc();
|
|
lib.tls_alloc();
|
|
lib.access();
|
|
lib.tls_access();
|
|
GC.collect();
|
|
lib.tls_access();
|
|
lib.access();
|
|
lib.tls_free();
|
|
lib.free();
|
|
}
|
|
|
|
import core.atomic : atomicOp;
|
|
shared static this() { assert(lib.shared_static_ctor == 1); }
|
|
shared static ~this() { assert(lib.shared_static_dtor == 0); }
|
|
shared uint static_ctor, static_dtor;
|
|
static this() { assert(lib.static_ctor == atomicOp!"+="(static_ctor, 1)); }
|
|
static ~this() { assert(lib.static_dtor + 1 == atomicOp!"+="(static_dtor, 1)); }
|
|
|
|
void testInit()
|
|
{
|
|
import core.thread;
|
|
|
|
assert(lib.static_ctor == 1);
|
|
assert(lib.static_dtor == 0);
|
|
static void foo()
|
|
{
|
|
assert(lib.shared_static_ctor == 1);
|
|
assert(lib.shared_static_dtor == 0);
|
|
assert(lib.static_ctor == 2);
|
|
assert(lib.static_dtor == 0);
|
|
}
|
|
auto thr = new Thread(&foo);
|
|
thr.start();
|
|
assert(thr.join() is null);
|
|
assert(lib.shared_static_ctor == 1);
|
|
assert(lib.shared_static_dtor == 0);
|
|
assert(lib.static_ctor == 2);
|
|
assert(lib.static_dtor == 1);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
testEH();
|
|
testGC();
|
|
testInit();
|
|
}
|