test = function (title, fn) {
if (typeof fn === "undefined") throw new NoTestError();
if (fn[Symbol.toStringTag] == "AsyncFunction") return testAsync(title, fn);
if (fn.length === 1) return testWithDoneCallback(title, fn);
else return testSync(title, fn);
}