blob: 433da66fcc3548d7ed58565bdf50d7e67035da9a [file] [log] [blame]
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();
}