1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
<?php
/**
* Device Detector - The Universal Device Detection library for parsing User Agents
*
* @link https://matomo.org
*
* @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
*/
declare(strict_types=1);
namespace DeviceDetector\Tests\Parser\Client;
use DeviceDetector\Parser\Client\Library;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
use Spyc;
class LibraryTest extends TestCase
{
/**
* @dataProvider getFixtures
*/
#[DataProvider('getFixtures')]
public function testParse(string $useragent, array $client): void
{
$libraryParser = new Library();
$libraryParser::setVersionTruncation(Library::VERSION_TRUNCATION_NONE);
$libraryParser->setUserAgent($useragent);
$this->assertEquals($client, $libraryParser->parse());
}
public static function getFixtures(): array
{
$fixtureData = Spyc::YAMLLoad(\realpath(__DIR__) . '/fixtures/library.yml');
$fixtureData = \array_map(static function (array $item): array {
return ['useragent' => $item['user_agent'], 'client' => $item['client']];
}, $fixtureData);
return $fixtureData;
}
public function testStructureLibraryYml(): void
{
$ymlDataItems = Spyc::YAMLLoad(__DIR__ . '/../../../regexes/client/libraries.yml');
foreach ($ymlDataItems as $item) {
$this->assertTrue(\array_key_exists('regex', $item), 'key "regex" not exist');
$this->assertTrue(\array_key_exists('name', $item), 'key "name" not exist');
$this->assertTrue(\array_key_exists('version', $item), 'key "version" not exist');
$this->assertIsString($item['regex']);
$this->assertIsString($item['name']);
$this->assertIsString($item['version']);
}
}
}
|