|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test class to test rcube_shared functions
|
|
|
|
*
|
|
|
|
* @package Tests
|
|
|
|
*/
|
|
|
|
class Framework_Shared extends PHPUnit_Framework_TestCase
|
|
|
|
{
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rcube_shared.inc: in_array_nocase()
|
|
|
|
*/
|
|
|
|
function test_in_array_nocase()
|
|
|
|
{
|
|
|
|
$haystack = array('Test');
|
|
|
|
$needle = 'test';
|
|
|
|
$result = in_array_nocase($needle, $haystack);
|
|
|
|
|
|
|
|
$this->assertTrue($result, $title);
|
|
|
|
|
|
|
|
$result = in_array_nocase($needle, null);
|
|
|
|
|
|
|
|
$this->assertFalse($result, $title);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rcube_shared.inc: get_boolean()
|
|
|
|
*/
|
|
|
|
function test_get_boolean()
|
|
|
|
{
|
|
|
|
$input = array(
|
|
|
|
false, 'false', '0', 'no', 'off', 'nein', 'FALSE', '', null,
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($input as $idx => $value) {
|
|
|
|
$this->assertFalse(get_boolean($value), "Invalid result for $idx test item");
|
|
|
|
}
|
|
|
|
|
|
|
|
$input = array(
|
|
|
|
true, 'true', '1', 1, 'yes', 'anything', 1000,
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($input as $idx => $value) {
|
|
|
|
$this->assertTrue(get_boolean($value), "Invalid result for $idx test item");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rcube_shared.inc: parse_bytes()
|
|
|
|
*/
|
|
|
|
function test_parse_bytes()
|
|
|
|
{
|
|
|
|
$data = array(
|
|
|
|
'1' => 1,
|
|
|
|
'1024' => 1024,
|
|
|
|
'2k' => 2 * 1024,
|
|
|
|
'2 k' => 2 * 1024,
|
|
|
|
'2kb' => 2 * 1024,
|
|
|
|
'2kB' => 2 * 1024,
|
|
|
|
'2m' => 2 * 1048576,
|
|
|
|
'2 m' => 2 * 1048576,
|
|
|
|
'2mb' => 2 * 1048576,
|
|
|
|
'2mB' => 2 * 1048576,
|
|
|
|
'2g' => 2 * 1024 * 1048576,
|
|
|
|
'2 g' => 2 * 1024 * 1048576,
|
|
|
|
'2gb' => 2 * 1024 * 1048576,
|
|
|
|
'2gB' => 2 * 1024 * 1048576,
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($data as $value => $expected) {
|
|
|
|
$result = parse_bytes($value);
|
|
|
|
$this->assertEquals($expected, $result, "Invalid parse_bytes() result for $value");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rcube_shared.inc: slashify()
|
|
|
|
*/
|
|
|
|
function test_slashify()
|
|
|
|
{
|
|
|
|
$data = array(
|
|
|
|
'test' => 'test/',
|
|
|
|
'test/' => 'test/',
|
|
|
|
'' => '/',
|
|
|
|
"\\" => "\\/",
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($data as $value => $expected) {
|
|
|
|
$result = slashify($value);
|
|
|
|
$this->assertEquals($expected, $result, "Invalid slashify() result for $value");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rcube_shared.inc: unslashify()
|
|
|
|
*/
|
|
|
|
function test_unslashify()
|
|
|
|
{
|
|
|
|
$data = array(
|
|
|
|
'test' => 'test',
|
|
|
|
'test/' => 'test',
|
|
|
|
'/' => '',
|
|
|
|
"\\/" => "\\",
|
|
|
|
'test/test' => 'test/test',
|
|
|
|
'test//' => 'test',
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($data as $value => $expected) {
|
|
|
|
$result = unslashify($value);
|
|
|
|
$this->assertEquals($expected, $result, "Invalid unslashify() result for $value");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rcube_shared.inc: get_offset_sec()
|
|
|
|
*/
|
|
|
|
function test_get_offset_sec()
|
|
|
|
{
|
|
|
|
$data = array(
|
|
|
|
'1s' => 1,
|
|
|
|
'1m' => 1 * 60,
|
|
|
|
'1h' => 1 * 60 * 60,
|
|
|
|
'1d' => 1 * 60 * 60 * 24,
|
|
|
|
'1w' => 1 * 60 * 60 * 24 * 7,
|
|
|
|
'1y' => (int) '1y',
|
|
|
|
100 => 100,
|
|
|
|
'100' => 100,
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($data as $value => $expected) {
|
|
|
|
$result = get_offset_sec($value);
|
|
|
|
$this->assertEquals($expected, $result, "Invalid get_offset_sec() result for $value");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rcube_shared.inc: array_keys_recursive()
|
|
|
|
*/
|
|
|
|
function test_array_keys_recursive()
|
|
|
|
{
|
|
|
|
$input = array(
|
|
|
|
'one' => array(
|
|
|
|
'two' => array(
|
|
|
|
'three' => array(),
|
|
|
|
'four' => 'something',
|
|
|
|
),
|
|
|
|
),
|
|
|
|
'five' => 'test',
|
|
|
|
);
|
|
|
|
|
|
|
|
$result = array_keys_recursive($input);
|
|
|
|
$input_str = 'one,two,three,four,five';
|
|
|
|
$result_str = implode(',', $result);
|
|
|
|
|
|
|
|
$this->assertEquals($input_str, $result_str, "Invalid array_keys_recursive() result");
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rcube_shared.inc: format_email()
|
|
|
|
*/
|
|
|
|
function test_format_email()
|
|
|
|
{
|
|
|
|
$data = array(
|
|
|
|
'' => '',
|
|
|
|
'test' => 'test',
|
|
|
|
'test@test.tld' => 'test@test.tld',
|
|
|
|
'test@[127.0.0.1]' => 'test@[127.0.0.1]',
|
|
|
|
'TEST@TEST.TLD' => 'TEST@test.tld',
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($data as $value => $expected) {
|
|
|
|
$result = format_email($value);
|
|
|
|
$this->assertEquals($expected, $result, "Invalid format_email() result for $value");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rcube_shared.inc: format_email_recipient()
|
|
|
|
*/
|
|
|
|
function test_format_email_recipient()
|
|
|
|
{
|
|
|
|
$data = array(
|
|
|
|
'' => array(''),
|
|
|
|
'test' => array('test'),
|
|
|
|
'test@test.tld' => array('test@test.tld'),
|
|
|
|
'test@[127.0.0.1]' => array('test@[127.0.0.1]'),
|
|
|
|
'TEST@TEST.TLD' => array('TEST@TEST.TLD'),
|
|
|
|
'TEST <test@test.tld>' => array('test@test.tld', 'TEST'),
|
|
|
|
'"TEST\"" <test@test.tld>' => array('test@test.tld', 'TEST"'),
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($data as $expected => $value) {
|
|
|
|
$result = format_email_recipient($value[0], $value[1]);
|
|
|
|
$this->assertEquals($expected, $result, "Invalid format_email_recipient()");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 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])");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|