Wiki Roadmap Timeline Tickets New Ticket Source Search Help / Guide About Trac Login

Ticket #287: runUnitTest_ldc.d

File runUnitTest_ldc.d, 13.7 kB (added by fawzi, 3 years ago)

unittest file

Line 
1         module runUnitTest_ldc;
2 import tango.core.Array;
3 import tango.core.Atomic;
4 import tango.core.BitArray;
5 import tango.core.ByteSwap;
6 import tango.core.Cpuid;
7 import tango.core.RuntimeTraits;
8 import tango.core.Signal;
9 import tango.core.stacktrace.Demangler;
10 import tango.core.stacktrace.StackTrace;
11 import tango.core.stacktrace.TraceExceptions;
12 import tango.core.stacktrace.WinStackTrace;
13 import tango.core.sync.Barrier;
14 import tango.core.sync.Condition;
15 import tango.core.sync.Config;
16 import tango.core.sync.Mutex;
17 import tango.core.sync.ReadWriteMutex;
18 import tango.core.sync.Semaphore;
19 import tango.core.ThreadPool;
20 import tango.core.Traits;
21 import tango.core.Tuple;
22 import tango.core.Vararg;
23 import tango.core.Variant;
24 import tango.core.Version;
25 import tango.io.Buffer;
26 import tango.io.compress.BzipStream;
27 import tango.io.compress.c.bzlib;
28 import tango.io.compress.c.zlib;
29 import tango.io.compress.Zip;
30 import tango.io.compress.ZlibStream;
31 import tango.io.Console;
32 import tango.io.device.Array;
33 import tango.io.device.BitBucket;
34 import tango.io.device.Conduit;
35 import tango.io.device.Device;
36 import tango.io.device.File;
37 import tango.io.device.FileMap;
38 import tango.io.device.SerialPort;
39 import tango.io.device.TempFile;
40 import tango.io.device.ThreadPipe;
41 import tango.io.digest.Crc32;
42 import tango.io.digest.Digest;
43 import tango.io.digest.Md2;
44 import tango.io.digest.Md4;
45 import tango.io.digest.Md5;
46 import tango.io.digest.MerkleDamgard;
47 import tango.io.digest.Sha0;
48 import tango.io.digest.Sha01;
49 import tango.io.digest.Sha1;
50 import tango.io.digest.Sha256;
51 import tango.io.digest.Sha512;
52 import tango.io.digest.Tiger;
53 import tango.io.encode.Base64;
54 import tango.io.FilePath;
55 import tango.io.FileScan;
56 import tango.io.FileSystem;
57 import tango.io.model.IBuffer;
58 import tango.io.model.IConduit;
59 import tango.io.model.IFile;
60 import tango.io.Path;
61 import tango.io.protocol.Allocator;
62 import tango.io.protocol.EndianProtocol;
63 import tango.io.protocol.model.IProtocol;
64 import tango.io.protocol.model.IReader;
65 import tango.io.protocol.model.IWriter;
66 import tango.io.protocol.NativeProtocol;
67 import tango.io.protocol.PickleProtocol;
68 import tango.io.protocol.Reader;
69 import tango.io.protocol.Writer;
70 import tango.io.selector.AbstractSelector;
71 import tango.io.selector.EpollSelector;
72 import tango.io.selector.model.ISelector;
73 import tango.io.selector.PollSelector;
74 import tango.io.selector.Selector;
75 import tango.io.selector.SelectorException;
76 import tango.io.selector.SelectSelector;
77 import tango.io.Stdout;
78 import tango.io.stream.Buffered;
79 import tango.io.stream.Data;
80 import tango.io.stream.DataFile;
81 import tango.io.stream.Delimiters;
82 import tango.io.stream.Digester;
83 import tango.io.stream.Endian;
84 import tango.io.stream.Format;
85 import tango.io.stream.Greedy;
86 import tango.io.stream.Iterator;
87 import tango.io.stream.Lines;
88 import tango.io.stream.Map;
89 import tango.io.stream.Patterns;
90 import tango.io.stream.Quotes;
91 import tango.io.stream.Snoop;
92 import tango.io.stream.Text;
93 import tango.io.stream.TextFile;
94 import tango.io.stream.Typed;
95 import tango.io.stream.Utf;
96 import tango.io.UnicodeFile;
97 import tango.io.vfs.FileFolder;
98 import tango.io.vfs.FtpFolder;
99 import tango.io.vfs.LinkedFolder;
100 import tango.io.vfs.model.Vfs;
101 import tango.io.vfs.VirtualFolder;
102 import tango.io.vfs.ZipFolder;
103 import tango.math.Bessel;
104 import tango.math.BigInt;
105 import tango.math.Bracket;
106 import tango.math.Elliptic;
107 import tango.math.ErrorFunction;
108 import tango.math.GammaFunction;
109 import tango.math.IEEE;
110 import tango.math.internal.BignumNoAsm;
111 import tango.math.internal.BignumX86;
112 import tango.math.internal.BiguintCore;
113 import tango.math.internal.Cache;
114 import tango.math.Math;
115 import tango.math.Probability;
116 import tango.math.random.engines.ArraySource;
117 import tango.math.random.engines.CMWC;
118 import tango.math.random.engines.KISS;
119 import tango.math.random.engines.KissCmwc;
120 import tango.math.random.engines.Sync;
121 import tango.math.random.engines.Twister;
122 import tango.math.random.engines.URandom;
123 import tango.math.random.ExpSource;
124 import tango.math.random.Kiss;
125 import tango.math.random.NormalSource;
126 import tango.math.random.Random;
127 import tango.math.random.Twister;
128 import tango.math.random.Ziggurat;
129 import tango.net.cluster.CacheInvalidatee;
130 import tango.net.cluster.CacheInvalidator;
131 import tango.net.cluster.model.ICache;
132 import tango.net.cluster.model.IChannel;
133 import tango.net.cluster.model.ICluster;
134 import tango.net.cluster.model.IConsumer;
135 import tango.net.cluster.model.IMessage;
136 import tango.net.cluster.NetworkAlert;
137 import tango.net.cluster.NetworkCache;
138 import tango.net.cluster.NetworkCall;
139 import tango.net.cluster.NetworkClient;
140 import tango.net.cluster.NetworkMessage;
141 import tango.net.cluster.NetworkQueue;
142 import tango.net.cluster.NetworkRegistry;
143 import tango.net.cluster.NetworkTask;
144 import tango.net.cluster.QueuedCache;
145 import tango.net.cluster.tina.CacheServer;
146 import tango.net.cluster.tina.CacheThread;
147 import tango.net.cluster.tina.Cluster;
148 import tango.net.cluster.tina.ClusterCache;
149 import tango.net.cluster.tina.ClusterQueue;
150 import tango.net.cluster.tina.ClusterServer;
151 import tango.net.cluster.tina.ClusterTask;
152 import tango.net.cluster.tina.ClusterThread;
153 import tango.net.cluster.tina.ClusterTypes;
154 import tango.net.cluster.tina.CmdParser;
155 import tango.net.cluster.tina.ProtocolReader;
156 import tango.net.cluster.tina.ProtocolWriter;
157 import tango.net.cluster.tina.QueueFile;
158 import tango.net.cluster.tina.QueueServer;
159 import tango.net.cluster.tina.QueueThread;
160 import tango.net.cluster.tina.RollCall;
161 import tango.net.cluster.tina.TaskServer;
162 import tango.net.cluster.tina.TaskThread;
163 import tango.net.cluster.tina.util.AbstractServer;
164 import tango.net.cluster.tina.util.model.IServer;
165 import tango.net.cluster.tina.util.ServerThread;
166 import tango.net.DatagramConduit;
167 import tango.net.device.Berkeley;
168 import tango.net.device.Datagram;
169 import tango.net.device.Multicast;
170 import tango.net.device.Socket;
171 import tango.net.device.SSLSocket;
172 import tango.net.ftp.FtpClient;
173 import tango.net.ftp.Telnet;
174 import tango.net.http.ChunkStream;
175 import tango.net.http.HttpClient;
176 import tango.net.http.HttpConst;
177 import tango.net.http.HttpCookies;
178 import tango.net.http.HttpGet;
179 import tango.net.http.HttpHeaders;
180 import tango.net.http.HttpParams;
181 import tango.net.http.HttpPost;
182 import tango.net.http.HttpStack;
183 import tango.net.http.HttpTokens;
184 import tango.net.http.HttpTriplet;
185 import tango.net.http.model.HttpParamsView;
186 import tango.net.InternetAddress;
187 import tango.net.model.UriView;
188 import tango.net.MulticastConduit;
189 import tango.net.PKI;
190 import tango.net.ServerSocket;
191 import tango.net.Socket;
192 import tango.net.SocketConduit;
193 import tango.net.SocketListener;
194 import tango.net.SSLServerSocket;
195 import tango.net.SSLSocketConduit;
196 import tango.net.Uri;
197 import tango.net.util.c.OpenSSL;
198 import tango.net.util.MemCache;
199 import tango.net.util.PKI;
200 import tango.stdc.complex;
201 import tango.stdc.config;
202 import tango.stdc.constants.autoconf.errno;
203 import tango.stdc.constants.autoconf.fcntl;
204 import tango.stdc.constants.autoconf.machine;
205 import tango.stdc.constants.autoconf.socket;
206 import tango.stdc.constants.autoconf.sysctl;
207 import tango.stdc.constants.autoconf.unistd;
208 import tango.stdc.constants.constSupport;
209 import tango.stdc.constants.darwin.errno;
210 import tango.stdc.constants.darwin.fcntl;
211 import tango.stdc.constants.darwin.machine;
212 import tango.stdc.constants.darwin.socket;
213 import tango.stdc.constants.darwin.sysctl;
214 import tango.stdc.constants.darwin.unistd;
215 import tango.stdc.constants.errno;
216 import tango.stdc.constants.fcntl;
217 import tango.stdc.constants.freebsd.errno;
218 import tango.stdc.constants.freebsd.fcntl;
219 import tango.stdc.constants.freebsd.socket;
220 import tango.stdc.constants.freebsd.sysctl;
221 import tango.stdc.constants.freebsd.unistd;
222 import tango.stdc.constants.linux.errno;
223 import tango.stdc.constants.linux.fcntl;
224 import tango.stdc.constants.linux.socket;
225 import tango.stdc.constants.linux.sysctl;
226 import tango.stdc.constants.linux.unistd;
227 import tango.stdc.constants.socket;
228 import tango.stdc.constants.solaris.errno;
229 import tango.stdc.constants.solaris.fcntl;
230 import tango.stdc.constants.solaris.socket;
231 import tango.stdc.constants.solaris.sysctl;
232 import tango.stdc.constants.solaris.unistd;
233 import tango.stdc.constants.sysctl;
234 import tango.stdc.constants.unistd;
235 import tango.stdc.constants.win.errno;
236 import tango.stdc.constants.win.fcntl;
237 import tango.stdc.constants.win.socket;
238 import tango.stdc.constants.win.sysctl;
239 import tango.stdc.constants.win.unistd;
240 import tango.stdc.ctype;
241 import tango.stdc.errno;
242 import tango.stdc.fenv;
243 import tango.stdc.inttypes;
244 import tango.stdc.limits;
245 import tango.stdc.locale;
246 import tango.stdc.math;
247 import tango.stdc.posix.arpa.inet;
248 import tango.stdc.posix.config;
249 import tango.stdc.posix.dirent;
250 import tango.stdc.posix.dlfcn;
251 import tango.stdc.posix.fcntl;
252 import tango.stdc.posix.inttypes;
253 import tango.stdc.posix.net.if_;
254 import tango.stdc.posix.netinet.in_;
255 import tango.stdc.posix.netinet.tcp;
256 import tango.stdc.posix.poll;
257 import tango.stdc.posix.pthread;
258 import tango.stdc.posix.pwd;
259 import tango.stdc.posix.sched;
260 import tango.stdc.posix.semaphore;
261 import tango.stdc.posix.setjmp;
262 import tango.stdc.posix.signal;
263 import tango.stdc.posix.statvfs;
264 import tango.stdc.posix.stdio;
265 import tango.stdc.posix.stdlib;
266 import tango.stdc.posix.sys.ipc;
267 import tango.stdc.posix.sys.mman;
268 import tango.stdc.posix.sys.select;
269 import tango.stdc.posix.sys.shm;
270 import tango.stdc.posix.sys.socket;
271 import tango.stdc.posix.sys.stat;
272 import tango.stdc.posix.sys.time;
273 import tango.stdc.posix.sys.types;
274 import tango.stdc.posix.sys.uio;
275 import tango.stdc.posix.sys.wait;
276 import tango.stdc.posix.termios;
277 import tango.stdc.posix.time;
278 import tango.stdc.posix.ucontext;
279 import tango.stdc.posix.unistd;
280 import tango.stdc.posix.utime;
281 import tango.stdc.signal;
282 import tango.stdc.stdarg;
283 import tango.stdc.stddef;
284 import tango.stdc.stdint;
285 import tango.stdc.stdio;
286 import tango.stdc.stdlib;
287 import tango.stdc.string;
288 import tango.stdc.stringz;
289 import tango.stdc.tgmath;
290 import tango.stdc.time;
291 import tango.stdc.wctype;
292 import tango.sys.Common;
293 import tango.sys.darwin.darwin;
294 import tango.sys.Environment;
295 import tango.sys.freebsd.freebsd;
296 import tango.sys.linux.epoll;
297 import tango.sys.linux.linux;
298 import tango.sys.linux.tipc;
299 import tango.sys.Pipe;
300 import tango.sys.Process;
301 import tango.sys.SharedLib;
302 import tango.sys.solaris.solaris;
303 import tango.sys.unix.Tilde;
304 import tango.text.Ascii;
305 import tango.text.convert.DateTime;
306 import tango.text.convert.Float;
307 import tango.text.convert.Format;
308 import tango.text.convert.Integer;
309 import tango.text.convert.Layout;
310 import tango.text.convert.TimeStamp;
311 import tango.text.convert.UnicodeBom;
312 import tango.text.convert.Utf;
313 import tango.text.json.Json;
314 import tango.text.json.JsonEscape;
315 import tango.text.json.JsonParser;
316 import tango.text.locale.Collation;
317 import tango.text.locale.Convert;
318 import tango.text.locale.Core;
319 import tango.text.locale.Data;
320 import tango.text.locale.Locale;
321 import tango.text.locale.Parse;
322 import tango.text.locale.Posix;
323 import tango.text.Regex;
324 import tango.text.Text;
325 import tango.text.Unicode;
326 import tango.text.UnicodeData;
327 import tango.text.Util;
328 import tango.text.xml.DocEntity;
329 import tango.text.xml.DocPrinter;
330 import tango.text.xml.DocTester;
331 import tango.text.xml.Document;
332 import tango.text.xml.PullParser;
333 import tango.text.xml.SaxParser;
334 import tango.time.chrono.Calendar;
335 import tango.time.chrono.Gregorian;
336 import tango.time.chrono.GregorianBased;
337 import tango.time.chrono.Hebrew;
338 import tango.time.chrono.Hijri;
339 import tango.time.chrono.Japanese;
340 import tango.time.chrono.Korean;
341 import tango.time.chrono.Taiwan;
342 import tango.time.chrono.ThaiBuddhist;
343 import tango.time.Clock;
344 import tango.time.ISO8601;
345 import tango.time.StopWatch;
346 import tango.time.Time;
347 import tango.time.WallClock;
348 import tango.util.ArgParser;
349 import tango.util.Arguments;
350 import tango.util.container.CircularList;
351 import tango.util.container.Clink;
352 import tango.util.container.Container;
353 import tango.util.container.HashMap;
354 import tango.util.container.HashSet;
355 import tango.util.container.LinkedList;
356 import tango.util.container.model.IContainer;
357 import tango.util.container.more.CacheMap;
358 import tango.util.container.more.HashFile;
359 import tango.util.container.more.Heap;
360 import tango.util.container.more.Stack;
361 import tango.util.container.more.StackMap;
362 import tango.util.container.more.Vector;
363 import tango.util.container.RedBlack;
364 import tango.util.container.Slink;
365 import tango.util.container.SortedMap;
366 import tango.util.Convert;
367 import tango.util.log.AppendConsole;
368 import tango.util.log.AppendFile;
369 import tango.util.log.AppendFiles;
370 import tango.util.log.AppendMail;
371 import tango.util.log.AppendSocket;
372 import tango.util.log.Config;
373 import tango.util.log.ConfigProps;
374 import tango.util.log.LayoutChainsaw;
375 import tango.util.log.LayoutDate;
376 import tango.util.log.Log;
377 import tango.util.log.model.ILogger;
378 import tango.util.log.Trace;
379 import tango.util.PathUtil;
380 import tango.io.Stdout;
381 import tango.core.Runtime;
382
383 bool tangoUnitTester()
384 {
385     uint countFailed = 0;
386     uint countTotal = 1;
387     Stdout ("NOTE: This is still fairly rudimentary, and will only report the").newline;
388     Stdout ("    first error per module.").newline;
389     foreach ( m; ModuleInfo )  // _moduleinfo_array )
390     {
391         if ( m.unitTest) {
392             Stdout.format ("{}. Executing unittests in '{}' ", countTotal, m.name).flush;
393             countTotal++;
394             try {
395                m.unitTest();
396             }
397             catch (Exception e) {
398                 countFailed++;
399                 Stdout(" - Unittest failed.").newline;
400                 e.writeOut(delegate void(char[]s){ Stdout(s); });
401                 continue;
402             }
403             Stdout(" - Success.").newline;
404         }
405     }
406
407     Stdout.format ("{} out of {} tests failed.", countFailed, countTotal - 1).newline;
408     return true;
409 }
410
411 static this() {
412     Runtime.moduleUnitTester( &tangoUnitTester );
413 }
414
415 void main() {}
Copyright © 2008, LDC Development Team.