Enhance shouldBe()/shouldNotBe() to accept anonymous function arguments
[WebKit-https.git] / LayoutTests / resources / js-test-pre.js
index bda0463..62801c5 100644 (file)
@@ -225,22 +225,22 @@ function evalAndLogResult(_a)
 
 function shouldBe(_a, _b, quiet)
 {
-  if (typeof _a != "string" || typeof _b != "string")
-    debug("WARN: shouldBe() expects string arguments");
+  if ((typeof _a != "function" && typeof _a != "string") || (typeof _b != "function" && typeof _b != "string"))
+    debug("WARN: shouldBe() expects function or string arguments");
   var exception;
   var _av;
   try {
-     _av = eval(_a);
+    _av = (typeof _a == "function" ? _a() : eval(_a));
   } catch (e) {
-     exception = e;
+    exception = e;
   }
-  var _bv = eval(_b);
+  var _bv = (typeof _b == "function" ? _b() : eval(_b));
 
   if (exception)
     testFailed(_a + " should be " + stringify(_bv) + ". Threw exception " + exception);
   else if (isResultCorrect(_av, _bv)) {
     if (!quiet) {
-        testPassed(_a + " is " + _b);
+      testPassed(_a + " is " + (typeof _b == "function" ? _bv : _b));
     }
   } else if (typeof(_av) == typeof(_bv))
     testFailed(_a + " should be " + stringify(_bv) + ". Was " + stringify(_av) + ".");
@@ -390,22 +390,22 @@ function shouldBeCloseTo(_to_eval, _target, _tolerance, quiet)
 
 function shouldNotBe(_a, _b, quiet)
 {
-  if (typeof _a != "string" || typeof _b != "string")
-    debug("WARN: shouldNotBe() expects string arguments");
+  if ((typeof _a != "function" && typeof _a != "string") || (typeof _b != "function" && typeof _b != "string"))
+    debug("WARN: shouldNotBe() expects function or string arguments");
   var exception;
   var _av;
   try {
-     _av = eval(_a);
+    _av = (typeof _a == "function" ? _a() : eval(_a));
   } catch (e) {
-     exception = e;
+    exception = e;
   }
-  var _bv = eval(_b);
+  var _bv = (typeof _b == "function" ? _b() : eval(_b));
 
   if (exception)
     testFailed(_a + " should not be " + _bv + ". Threw exception " + exception);
   else if (!isResultCorrect(_av, _bv)) {
     if (!quiet) {
-        testPassed(_a + " is not " + _b);
+      testPassed(_a + " is not " + (typeof _b == "function" ? _bv : _b));
     }
   } else
     testFailed(_a + " should not be " + _bv + ".");