diff options
Diffstat (limited to 'tests/Framework')
-rw-r--r-- | tests/Framework/Charset.php | 140 | ||||
-rw-r--r-- | tests/Framework/Shared.php | 28 | ||||
-rw-r--r-- | tests/Framework/VCard.php | 14 |
3 files changed, 179 insertions, 3 deletions
diff --git a/tests/Framework/Charset.php b/tests/Framework/Charset.php index 9e3fad4d3..1fd1654dc 100644 --- a/tests/Framework/Charset.php +++ b/tests/Framework/Charset.php @@ -14,15 +14,149 @@ class Framework_Charset extends PHPUnit_Framework_TestCase function data_clean() { return array( - array('', '', 'Empty string'), + array('', ''), + array("\xC1", ''), ); } /** * @dataProvider data_clean */ - function test_clean($input, $output, $title) + function test_clean($input, $output) { - $this->assertEquals(rcube_charset::clean($input), $output, $title); + $this->assertEquals($output, rcube_charset::clean($input)); } + + /** + * Data for test_parse_charset() + */ + function data_parse_charset() + { + return array( + array('UTF8', 'UTF-8'), + array('WIN1250', 'WINDOWS-1250'), + ); + } + + /** + * @dataProvider data_parse_charset + */ + function test_parse_charset($input, $output) + { + $this->assertEquals($output, rcube_charset::parse_charset($input)); + } + + /** + * Data for test_convert() + */ + function data_convert() + { + return array( + array('ö', 'ö', 'UTF-8', 'UTF-8'), + array('ö', '', 'UTF-8', 'US-ASCII'), + array('aż', 'a', 'UTF-8', 'US-ASCII'), + array('&BCAEMARBBEEESwQ7BDoEOA-', 'Рассылки', 'UTF7-IMAP', 'UTF-8'), + array('Рассылки', '&BCAEMARBBEEESwQ7BDoEOA-', 'UTF-8', 'UTF7-IMAP'), + ); + } + + /** + * @dataProvider data_convert + */ + function test_convert($input, $output, $from, $to) + { + $this->assertEquals($output, rcube_charset::convert($input, $from, $to)); + } + + /** + * Data for test_utf7_to_utf8() + */ + function data_utf7_to_utf8() + { + return array( + array('+BCAEMARBBEEESwQ7BDoEOA-', 'Рассылки'), + ); + } + + /** + * @dataProvider data_utf7_to_utf8 + */ + function test_utf7_to_utf8($input, $output) + { + $this->assertEquals($output, rcube_charset::utf7_to_utf8($input)); + } + + /** + * Data for test_utf7imap_to_utf8() + */ + function data_utf7imap_to_utf8() + { + return array( + array('&BCAEMARBBEEESwQ7BDoEOA-', 'Рассылки'), + ); + } + + /** + * @dataProvider data_utf7imap_to_utf8 + */ + function test_utf7imap_to_utf8($input, $output) + { + $this->assertEquals($output, rcube_charset::utf7imap_to_utf8($input)); + } + + /** + * Data for test_utf8_to_utf7imap() + */ + function data_utf8_to_utf7imap() + { + return array( + array('Рассылки', '&BCAEMARBBEEESwQ7BDoEOA-'), + ); + } + + /** + * @dataProvider data_utf8_to_utf7imap + */ + function test_utf8_to_utf7imap($input, $output) + { + $this->assertEquals($output, rcube_charset::utf8_to_utf7imap($input)); + } + + /** + * Data for test_utf16_to_utf8() + */ + function data_utf16_to_utf8() + { + return array( + array(base64_decode('BCAEMARBBEEESwQ7BDoEOA=='), 'Рассылки'), + ); + } + + /** + * @dataProvider data_utf16_to_utf8 + */ + function test_utf16_to_utf8($input, $output) + { + $this->assertEquals($output, rcube_charset::utf16_to_utf8($input)); + } + + /** + * Data for test_detect() + */ + function data_detect() + { + return array( + array('', '', 'UTF-8'), + array('a', 'UTF-8', 'UTF-8'), + ); + } + + /** + * @dataProvider data_detect + */ + function test_detect($input, $fallback, $output) + { + $this->assertEquals($output, rcube_charset::detect($input, $fallback)); + } + } diff --git a/tests/Framework/Shared.php b/tests/Framework/Shared.php index 99ef829da..0394cd025 100644 --- a/tests/Framework/Shared.php +++ b/tests/Framework/Shared.php @@ -201,4 +201,32 @@ class Framework_Shared extends PHPUnit_Framework_TestCase } + /** + * rcube_shared.inc: is_ascii() + */ + function test_is_ascii() + { + $result = is_ascii("0123456789"); + $this->assertTrue($result, "Valid ASCII (numbers)"); + + $result = is_ascii("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); + $this->assertTrue($result, "Valid ASCII (letters)"); + + $result = is_ascii(" !\"#\$%&'()*+,-./:;<=>?@[\\^_`{|}~"); + $this->assertTrue($result, "Valid ASCII (special characters)"); + + $result = is_ascii("\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F" + ."\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"); + $this->assertTrue($result, "Valid ASCII (control characters)"); + + $result = is_ascii("\n", false); + $this->assertFalse($result, "Valid ASCII (control characters)"); + + $result = is_ascii("ż"); + $this->assertFalse($result, "Invalid ASCII (UTF-8 character)"); + + $result = is_ascii("ż", false); + $this->assertFalse($result, "Invalid ASCII (UTF-8 character [2])"); + } + } diff --git a/tests/Framework/VCard.php b/tests/Framework/VCard.php index a830c2cbc..56ca9d721 100644 --- a/tests/Framework/VCard.php +++ b/tests/Framework/VCard.php @@ -49,6 +49,20 @@ class Framework_VCard extends PHPUnit_Framework_TestCase $this->assertEquals("Iksiñski", $vcards2[0]->surname, "Detect charset in encoded values"); } + function test_import_photo_encoding() + { + $input = file_get_contents($this->_srcpath('photo.vcf')); + + $vcards = rcube_vcard::import($input); + $vcard = $vcards[0]->get_assoc(); + + $this->assertCount(1, $vcards, "Detected 1 vcard"); + + // ENCODING=b case (#1488683) + $this->assertEquals("/9j/4AAQSkZJRgABAQA", substr(base64_encode($vcard['photo']), 0, 19), "Photo decoding"); + $this->assertEquals("Müller", $vcard['surname'], "Unicode characters"); + } + function test_encodings() { $input = file_get_contents($this->_srcpath('utf-16_sample.vcf')); |