From 6688ddbd65983239d28ea8b1da5e70030ae88c6f Mon Sep 17 00:00:00 2001
From: Urban Müller
Date: Thu, 31 Jul 2014 14:48:56 +0200
Subject: support it::time

---
 it.class   | 12 ++++++++++--
 tests/it.t | 11 +++++++----
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/it.class b/it.class
index 64a2f51..f514537 100644
--- a/it.class
+++ b/it.class
@@ -858,6 +858,14 @@ static function gets()
 	return $result;
 }
 
+/**
+ * Like time() but overridable via debug param
+ */
+function time()
+{
+	return ($t = EDC('time')) ? strtotime($t) : time();
+}
+
 /**
  * Output formatted and localized date
  * @param format optional format (default is 2007-01-02 03:04:05).
@@ -870,9 +878,9 @@ static function gets()
 static function date($format = "", $stamp = null)
 {
 	if (!isset($stamp))
-		$stamp = EDC('time') ? strtotime(EDC('time')) : time();
+		$stamp = it::time();
 	else if (is_string($stamp) && !ctype_digit($stamp))
-		$stamp = strtotime($stamp);
+		$stamp = strtotime($stamp, it::time());
 
 	list($name, $language) = explode(":", $format);
 
diff --git a/tests/it.t b/tests/it.t
index 3b69072..4cf61c1 100755
--- a/tests/it.t
+++ b/tests/it.t
@@ -333,12 +333,15 @@ is(
 
 # it::date tests
 
+$GLOBALS['debug_time'] = "2014-01-01";
+is(it::date(), "2014-01-01 00:00:00");
+
 is(it::date('date', '2011-10-25'), '25.10.2011', 'parse date string with strtotime');
 is(it::date('date', '2011-10-25 + 3 days'), '28.10.2011', 'some date arithmetic');
-is(it::date('datetime', time()), it::date('datetime'), 'recognize int as timestamp');
-is(it::date('datetime', time()*1.0), it::date('datetime'), 'recognize float as timestamp');
-is(it::date('datetime', time() . ''), it::date('datetime'), 'recognize digit string as timestamp');
-is(it::date('datetime', '@' . time()), it::date('datetime'), 'recognize strtotime timestamp format');
+is(it::date('datetime', it::time()), it::date('datetime'), 'recognize int as timestamp');
+is(it::date('datetime', it::time()*1.0), it::date('datetime'), 'recognize float as timestamp');
+is(it::date('datetime', it::time() . ''), it::date('datetime'), 'recognize digit string as timestamp');
+is(it::date('datetime', '@' . it::time()), it::date('datetime'), 'recognize strtotime timestamp format');
 is(it::date('datetime', 10), it::date('datetime', "10"), 'numeric and string give same result');
 is(it::date('datetime', 10.0), it::date('datetime', "10"), '... as long as num is properly truncated');
 is(it::date('datetime', 10.5), it::date('datetime', "10"), '... with one digit after point');
-- 
cgit v1.2.3