From bb2113ccdcfb2eb3c7b04c161a6b21ef893eee7e Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 31 Mar 2015 07:51:59 -0400
Subject: [PATCH] Fix zipped messages downloads after selecting all messages in a folder (#1490339)
---
tests/Framework/Utils.php | 128 +++++++++++++++++++++++++++++++++++++++++-
1 files changed, 123 insertions(+), 5 deletions(-)
diff --git a/tests/Framework/Utils.php b/tests/Framework/Utils.php
index abfb7cb..f7389f0 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');
}
/**
@@ -234,7 +241,7 @@
);
foreach ($input as $idx => $value) {
- $this->assertFalse(get_boolean($value), "Invalid result for $idx test item");
+ $this->assertFalse(rcube_utils::get_boolean($value), "Invalid result for $idx test item");
}
$input = array(
@@ -242,7 +249,7 @@
);
foreach ($input as $idx => $value) {
- $this->assertTrue(get_boolean($value), "Invalid result for $idx test item");
+ $this->assertTrue(rcube_utils::get_boolean($value), "Invalid result for $idx test item");
}
}
@@ -271,26 +278,137 @@
$test = array(
'1' => 1,
'' => 0,
+ 'abc-555' => 0,
+ '2013-04-22' => 1366581600,
+ '2013/04/22' => 1366581600,
+ '2013.04.22' => 1366581600,
+ '22-04-2013' => 1366581600,
+ '22/04/2013' => 1366581600,
+ '22.04.2013' => 1366581600,
+ '22.4.2013' => 1366581600,
+ '20130422' => 1366581600,
+ '2013/06/21 12:00:00 UTC' => 1371816000,
+ '2013/06/21 12:00:00 Europe/Berlin' => 1371808800,
);
foreach ($test as $datetime => $ts) {
$result = rcube_utils::strtotime($datetime);
- $this->assertSame($ts, $result);
+ $this->assertSame($ts, $result, "Error parsing date: $datetime");
}
}
/**
- * 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') : false, "Error parsing date: $datetime");
+ }
+ }
+
+ /**
+ * rcube:utils::anytodatetime()
+ */
+ function test_anytodatetime_timezone()
+ {
+ $tz = new DateTimeZone('Europe/Helsinki');
+ $test = array(
+ 'Jan 1st 2014 +0800' => '2013-12-31 18:00', // result in target timezone
+ 'Jan 1st 14 45:42' => '2014-01-01 00:00', // force fallback to rcube_utils::strtotime()
+ 'Jan 1st 2014 UK' => '2014-01-01 00:00',
+ 'Invalid date' => false,
+ );
+
+ foreach ($test as $datetime => $ts) {
+ $result = rcube_utils::anytodatetime($datetime, $tz);
+ if ($result) $result->setTimezone($tz); // move to target timezone for comparison
+ $this->assertSame($ts, $result ? $result->format('Y-m-d H:i') : false, "Error parsing date: $datetime");
+ }
+ }
+
+ /**
+ * rcube:utils::tokenize_string()
+ */
+ function test_tokenize_string()
+ {
+ $test = array(
+ '' => array(),
+ 'abc d' => array('abc'),
+ 'abc de' => array('abc','de'),
+ 'äàé;êöü-xyz' => array('äàé','êöü','xyz'),
+ '日期格式' => array('日期格式'),
+ );
+
+ foreach ($test as $input => $output) {
+ $result = rcube_utils::tokenize_string($input);
+ $this->assertSame($output, $result);
+ }
+ }
+
+ /**
+ * rcube:utils::normalize_string()
*/
function test_normalize_string()
{
$test = array(
- '' => '',
+ '' => '',
'abc def' => 'abc def',
+ 'ÇçäâàåæéêëèïîìÅÉöôòüûùÿøØáíóúñÑÁÂÀãÃÊËÈÍÎÏÓÔõÕÚÛÙýÝ' => 'ccaaaaaeeeeiiiaeooouuuyooaiounnaaaaaeeeiiioooouuuyy',
+ 'ąáâäćçčéęëěíîłľĺńňóôöŕřśšşťţůúűüźžżýĄŚŻŹĆ' => 'aaaaccceeeeiilllnnooorrsssttuuuuzzzyaszzc',
+ 'ß' => '',
+ 'ßs' => 'sss',
+ 'Xae' => 'xa',
+ 'Xoe' => 'xo',
+ 'Xue' => 'xu',
+ '项目' => '项目',
+ '日' => '', // FIXME: this should not be stripped although minlen = 2
);
foreach ($test as $input => $output) {
$result = rcube_utils::normalize_string($input);
+ $this->assertSame($output, $result, "Error normalizing '$input'");
+ }
+ }
+
+ /**
+ * 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