--- /dev/null
+float TEST_failed;
+float TEST_ok;
+
+void TEST_Fail(string cond)
+{
+ print(sprintf("Assertion failed: ", cond));
+ //backtrace();
+ ++TEST_failed;
+}
+
+void TEST_OK()
+{
+ TEST_ok = TRUE;
+}
+
+float TEST_RunAll()
+{
+ float f = 0;
+ float n = numentityfields();
+ float i;
+ for(i = 0; i < n; ++i)
+ {
+ string name = entityfieldname(i);
+ if(substring(name, 0, 6) == "_TEST_")
+ if(!TEST_Run(substring(name, 6, -1)))
+ ++f;
+ }
+ if(f)
+ {
+ print(sprintf("%d tests failed\n", f));
+ return 1;
+ }
+ else
+ {
+ print(sprintf("All tests OK\n", f));
+ return 0;
+ }
+}
+
+float TEST_Run(string s)
+{
+ print(sprintf("%s: testing...\n", s));
+ TEST_failed = TEST_ok = 0;
+ callfunction(strcat("_TEST_", s));
+ if(TEST_failed > 0)
+ {
+ print(sprintf("%s: %d items failed.\n", s, TEST_failed));
+ return 0;
+ }
+ else if(!TEST_ok)
+ {
+ print(sprintf("%s: did not complete.\n", s));
+ return 0;
+ }
+ return 1;
+}