Newer
Older
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
use Piwik\Access;
use Piwik\MetricsFormatter;
mattab
a validé
use Piwik\Plugins\SitesManager\API;
use Piwik\Translate;
Thomas Steur
a validé
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
Thomas Steur
a validé
/**
* Class Core_PiwikTest
*
* @group Core
*/
Thomas Steur
a validé
class Core_PiwikTest extends IntegrationTestCase
{
/**
* Dataprovider for testIsNumericValid
*/
public function getValidNumeric()
{
$valid = array(
-1, 0, 1, 1.5, -1.5, 21111, 89898, 99999999999, -4565656,
(float)-1, (float)0, (float)1, (float)1.5, (float)-1.5, (float)21111, (float)89898, (float)99999999999, (float)-4565656,
(int)-1, (int)0, (int)1, (int)1.5, (int)-1.5, (int)21111, (int)89898, (int)99999999999, (int)-4565656,
'-1', '0', '1', '1.5', '-1.5', '21111', '89898', '99999999999', '-4565656',
'1e3', '0x123', "-1e-2",
$valid[$key] = array($value);
}
return $valid;
}
/**
* @dataProvider getValidNumeric
*/
public function testIsNumericValid($toTest)
{
$this->assertTrue(is_numeric($toTest), $toTest . " not valid but should!");
}
/**
* Dataprovider for testIsNumericNotValid
*/
public function getInvalidNumeric()
{
$notValid = array(
'-1.0.0', '1,2', '--1', '-.', '- 1', '1-',
$notValid[$key] = array($value);
}
return $notValid;
}
/**
* @dataProvider getInvalidNumeric
*/
public function testIsNumericNotValid($toTest)
{
$this->assertFalse(is_numeric($toTest), $toTest . " valid but shouldn't!");
}
public function testSecureDiv()
{
$this->assertSame(3, Piwik::secureDiv(9, 3));
$this->assertSame(0, Piwik::secureDiv(9, 0));
$this->assertSame(10, Piwik::secureDiv(10, 1));
$this->assertSame(10.0, Piwik::secureDiv(10.0, 1.0));
$this->assertSame(5.5, Piwik::secureDiv(11.0, 2));
$this->assertSame(0, Piwik::secureDiv(11.0, 'a'));
}
/**
* Dataprovider for testGetPrettyTimeFromSeconds
*/
public function getPrettyTimeFromSecondsData()
{
return array(
array(30, array('30s', '00:00:30')),
array(60, array('1 min 0s', '00:01:00')),
array(100, array('1 min 40s', '00:01:40')),
array(3600, array('1 hours 0 min', '01:00:00')),
array(3700, array('1 hours 1 min', '01:01:40')),
array(86400 + 3600 * 10, array('1 days 10 hours', '34:00:00')),
array(86400 * 365, array('365 days 0 hours', '8760:00:00')),
array((86400 * (365.25 + 10)), array('1 years 10 days', '9006:00:00')),
array(1.342, array('1.34s', '00:00:01.34')),
array(.342, array('0.34s', '00:00:00.34')),
array(.02, array('0.02s', '00:00:00.02')),
array(1.002, array('1s', '00:00:01')),
array(1.02, array('1.02s', '00:00:01.02')),
array(1.2, array('1.2s', '00:00:01.20')),
Thomas Steur
a validé
array(122.1, array('2 min 2.1s', '00:02:02.10')),
array(-122.1, array('-2 min 2.1s', '-00:02:02.10')),
array(86400 * -365, array('-365 days 0 hours', '-8760:00:00'))
);
}
/**
* @dataProvider getPrettyTimeFromSecondsData
*/
public function testGetPrettyTimeFromSeconds($seconds, $expected)
{
if (($seconds * 100) > PHP_INT_MAX) {
$this->markTestSkipped("Will not pass on 32-bit machine.");
}
$sentenceExpected = str_replace(' ', ' ', $expected[0]);
$this->assertEquals($sentenceExpected, MetricsFormatter::getPrettyTimeFromSeconds($seconds, $sentence = true));
$this->assertEquals($numericExpected, MetricsFormatter::getPrettyTimeFromSeconds($seconds, $sentence = false));
}
/**
* Dataprovider for testCheckValidLoginString
*/
public function getInvalidLoginStringData()
{
$notValid = array(
'',
' ',
'a',
'aa',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
'alpha/beta',
'alpha:beta',
'alpha;beta',
'alpha<beta',
'alpha=beta',
'alpha>beta',
'alpha?beta',
);
$notValid[$key] = array($value);
}
return $notValid;
}
/**
* @dataProvider getInvalidLoginStringData
Thomas Steur
a validé
* @expectedException \Exception
*/
public function testCheckInvalidLoginString($toTest)
{
Thomas Steur
a validé
Piwik::checkValidLoginString($toTest);
}
/**
* Dataprovider for testCheckValidLoginString
*/
public function getValidLoginStringData()
{
$valid = array(
'aaa',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
'shoot_puck@the-goal.com',
);
$valid[$key] = array($value);
}
return $valid;
}
/**
* @dataProvider getValidLoginStringData
*/
public function testCheckValidLoginString($toTest)
{
$this->assertNull(Piwik::checkValidLoginString($toTest));
}
/**
* Dataprovider for testGetPrettyValue
*/
public function getGetPrettyValueTestCases()
{
return array(
array('revenue', 12, '$ 12'),
array('revenue_evolution', '100 %', '100 %'),
array('avg_time_generation', '3.333', '3.33s'),
array('avg_time_generation', '333.333', '5 min 33.33s'),
array('avg_time_on_page', '3', '00:00:03'),
array('avg_time_on_page', '333', '00:05:33'),
);
}
/**
* @dataProvider getGetPrettyValueTestCases
*/
public function testGetPrettyValue($columnName, $value, $expected)
{
$access = Access::getInstance();
Thomas Steur
a validé
$access->setSuperUserAccess(true);
mattab
a validé
$idsite = API::getInstance()->addSite("test", "http://test");
$this->assertEquals(
$expected,
MetricsFormatter::getPrettyValue($idsite, $columnName, $value, false, false)
}
/**
* Data provider for testIsAssociativeArray.
*/
public function getIsAssociativeArrayTestCases()
{
return array(
array(array(0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e', 5 => 'f'), false),
array(array(-1 => 'a', 0 => 'a', 1 => 'a', 2 => 'a', 3 => 'a'), true),
array(array(4 => 'a', 5 => 'a', 6 => 'a', 7 => 'a', 8 => 'a'), true),
array(array(0 => 'a', 2 => 'a', 3 => 'a', 4 => 'a', 5 => 'a'), true),
array(array('abc' => 'a', 0 => 'b', 'sdfds' => 'd'), true),
array(array('abc' => 'def'), true)
);
}
/**
benakamoorthi
a validé
* @dataProvider getIsAssociativeArrayTestCases
*/
public function testIsAssociativeArray($array, $expected)
{
$this->assertEquals($expected, Piwik::isAssociativeArray($array));
}