diff options
Diffstat (limited to 'Examples/test-suite/d/threads_runme.2.d')
-rw-r--r-- | Examples/test-suite/d/threads_runme.2.d | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Examples/test-suite/d/threads_runme.2.d b/Examples/test-suite/d/threads_runme.2.d new file mode 100644 index 000000000..3ac27a5a8 --- /dev/null +++ b/Examples/test-suite/d/threads_runme.2.d @@ -0,0 +1,55 @@ +module threads_runme; + +import core.thread; +import std.conv; +import std.exception; +import std.range; +import std.stdio; +import threads.Kerfuffle; + +// Spawn 8 threads. +enum THREADS = iota(0, 9); + +// Run test for a few seconds on a 1GHz machine. +enum WORK_RANGE = iota(0, 30000); + +void main() { + auto kerf = new Kerfuffle(); + TestThread[] threads; + + // Invoke the threads. + foreach (i; THREADS) { + auto thread = new TestThread(kerf); + threads ~= thread; + thread.name = to!string(i); + thread.start(); + } + + // Wait for the threads to finish. + foreach (i, thread; threads) { + thread.join(true); + } +} + +class TestThread : Thread { + this(Kerfuffle kerf) { + super(&run); + m_kerf = kerf; + } + + void run() { + foreach (i; WORK_RANGE) { + string given = "This is the test string that should come back. A number: " ~ to!string(i); + string received = m_kerf.StdString(given); + enforce(received == given, "StdString string does not match. Received: '" ~ received ~ "'. Expected: '" ~ given ~ "'."); + } + foreach (i; WORK_RANGE) { + string given = "This is the test string that should come back. A number: " ~ to!string(i); + string received = m_kerf.CharString(given); + enforce(received == given, "CharString string does not match. Received: '" ~ received ~ "'. Expected: '" ~ given ~ "'."); + } + } + +private: + Kerfuffle m_kerf; +} |