From ced34cb15e095836767971aa4d27b141fb1d7ec9 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sat, 18 Oct 2014 08:47:54 -0400
Subject: [PATCH] Merge pull request #230 from bytesatwork-xx/master

---
 tests/Framework/Utils.php |   69 +++++++++++++++++++++++++++++++++-
 1 files changed, 67 insertions(+), 2 deletions(-)

diff --git a/tests/Framework/Utils.php b/tests/Framework/Utils.php
index 3f7f48c..b32974d 100644
--- a/tests/Framework/Utils.php
+++ b/tests/Framework/Utils.php
@@ -29,6 +29,7 @@
             array('email@domain.name', '.name is valid Top Level Domain name'),
             array('email@domain.co.jp', 'Dot in Top Level Domain name also considered valid (use co.jp as example here)'),
             array('firstname-lastname@domain.com', 'Dash in address field is valid'),
+            array('test@xn--e1aaa0cbbbcacac.xn--p1ai', 'IDNA domain'),
         );
     }
 
@@ -171,6 +172,12 @@
         $this->assertRegExp('/#rcmbody h1\s\{/', $mod, "Prefix tag styles (single)");
         $this->assertRegExp('/#rcmbody h1, #rcmbody h2, #rcmbody h3, #rcmbody textarea\s+\{/', $mod, "Prefix tag styles (multiple)");
         $this->assertRegExp('/#rcmbody \.noscript\s+\{/', $mod, "Prefix class styles");
+
+        $css = file_get_contents(TESTS_DIR . 'src/media.css');
+        $mod = rcube_utils::mod_css_styles($css, 'rcmbody');
+
+        $this->assertContains('#rcmbody table[class=w600]', $mod, 'Replace styles nested in @media block');
+        $this->assertContains('#rcmbody {width:600px', $mod, 'Replace body selector nested in @media block');
     }
 
     /**
@@ -288,13 +295,45 @@
     }
 
     /**
-     * rcube:utils::normalize _string()
+     * rcube:utils::anytodatetime()
+     */
+    function test_anytodatetime()
+    {
+        $test = array(
+            '2013-04-22' => '2013-04-22',
+            '2013/04/22' => '2013-04-22',
+            '2013.04.22' => '2013-04-22',
+            '22-04-2013' => '2013-04-22',
+            '22/04/2013' => '2013-04-22',
+            '22.04.2013' => '2013-04-22',
+            '04/22/2013' => '2013-04-22',
+            '22.4.2013'  => '2013-04-22',
+            '20130422'   => '2013-04-22',
+            '1900-10-10' => '1900-10-10',
+            '01-01-1900' => '1900-01-01',
+            '01/30/1960' => '1960-01-30'
+        );
+
+        foreach ($test as $datetime => $ts) {
+            $result = rcube_utils::anytodatetime($datetime);
+            $this->assertSame($ts, $result ? $result->format('Y-m-d') : '', "Error parsing date: $datetime");
+        }
+    }
+
+    /**
+     * rcube:utils::normalize_string()
      */
     function test_normalize_string()
     {
         $test = array(
-            '' => '',
+            ''        => '',
             'abc def' => 'abc def',
+            'ÇçäâàåæéêëèïîìÅÉöôòüûùÿøØáíóúñÑÁÂÀãÃÊËÈÍÎÏÓÔõÕÚÛÙýÝ' => 'ccaaaaaeeeeiiiaeooouuuyooaiounnaaaaaeeeiiioooouuuyy',
+            'ąáâäćçčéęëěíîłľĺńňóôöŕřśšşťţůúűüźžżýĄŚŻŹĆ' => 'aaaaccceeeeiilllnnooorrsssttuuuuzzzyaszzc',
+            'ß'  => 'ss',
+            'ae' => 'a',
+            'oe' => 'o',
+            'ue' => 'u',
         );
 
         foreach ($test as $input => $output) {
@@ -302,4 +341,30 @@
             $this->assertSame($output, $result);
         }
     }
+
+    /**
+     * rcube:utils::is_absolute_path()
+     */
+    function test_is_absolute_path()
+    {
+        if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
+            $test = array(
+                '' => false,
+                "C:\\" => true,
+                'some/path' => false,
+            );
+        }
+        else {
+            $test = array(
+                '' => false,
+                '/path' => true,
+                'some/path' => false,
+            );
+        }
+
+        foreach ($test as $input => $output) {
+            $result = rcube_utils::is_absolute_path($input);
+            $this->assertSame($output, $result);
+        }
+    }
 }

--
Gitblit v1.9.1