/** * @param string $userAgent * @param string $expectedDeviceId * @param string $expectedBrowser * @param string $expectedOs * @param string $expectedDevice * * @dataProvider deviceIdAgentProvider */ public function testGet($userAgent, $expectedDeviceId, $expectedBrowser = null, $expectedOs = null, $expectedDevice = null) { $header = array('HTTP_USER_AGENT' => $userAgent); $request = new GenericRequest($header, $userAgent, null, false); self::assertNotNull(self::$deviceRepository); $modelDevices = self::$deviceRepository->getDeviceHierarchy($expectedDeviceId); $customDevice = new CustomDevice($modelDevices, $request); $testObject = new VirtualCapabilityProvider($customDevice, $request); self::assertTrue($testObject->exists('advertised_browser')); self::assertSame($expectedBrowser, $testObject->get('advertised_browser'), 'property value mismatch for property "advertised_browser", expected: ' . $expectedBrowser . ', got:' . $testObject->get('advertised_browser')); self::assertTrue($testObject->exists('advertised_device_os')); self::assertSame($expectedOs, $testObject->get('advertised_device_os'), 'property value mismatch for property "advertised_device_os", expected: ' . $expectedOs . ', got:' . $testObject->get('advertised_device_os')); self::assertTrue($testObject->exists('complete_device_name')); self::assertSame($expectedDevice, $testObject->get('complete_device_name'), 'property value mismatch for property "complete_device_name", expected: ' . $expectedDevice . ', got:' . $testObject->get('complete_device_name')); }
private function verifyRepository() { /** * verify required device ids */ foreach ($this->userAgentHandlerChain->getHandlers() as $handler) { /** * @var \Wurfl\Handlers\AbstractHandler */ foreach ($handler::$constantIDs as $requireDeviceId) { $device = $this->persistenceProvider->load($requireDeviceId); if ($device === null) { throw new ConsistencyException('wurfl.xml load error - device id [' . $requireDeviceId . '] is missing - ' . 'you may need to update the wurfl.xml file to a more recent version'); } } } /** * verify required capabilities */ $requiredCaps = VirtualCapabilityProvider::getRequiredCapabilities(); /** @var \Wurfl\Device\ModelDeviceInterface $genericDevice */ $genericDevice = $this->persistenceProvider->load('generic'); $loadedCaps = array_keys($genericDevice->getCapabilities()); $missingCaps = array_diff($requiredCaps, $loadedCaps); if (count($missingCaps) > 0) { throw new ConsistencyException('Missing required WURFL Capabilities: ' . implode(', ', $missingCaps)); } $invalidFallbacks = array_diff(array_keys($this->fallbacks), $this->devices); if (count($invalidFallbacks) > 0) { foreach ($invalidFallbacks as $invalidFallback) { $device = new CustomDevice(array($this->persistenceProvider->load($this->fallbacks[$invalidFallback]))); throw new ConsistencyException(sprintf('Invalid Fallback %s for the device %s', $invalidFallback, $device->id)); } } $this->fallbacks = array(); $this->devices = array(); }
/** * Returns an associative array of capabilityName => capabilityValue for the given $deviceID * * @param string $deviceID * * @return array associative array of capabilityName, capabilityValue */ public function getAllCapabilitiesForDevice($deviceID) { $devices = array_reverse($this->getDeviceHierarchy($deviceID)); $capabilities = array(); foreach ($devices as $device) { /** @var $device \Wurfl\Device\ModelDeviceInterface */ if (is_array($device->capabilities)) { $capabilities = array_merge($capabilities, $device->capabilities); } } $capabilities = array_diff_key($capabilities, array_flip(VirtualCapabilityProvider::getControlCapabilities())); return $capabilities; }
/** * Returns capabilities and their values for the current device * * @return array Device capabilities array * * @see \Wurfl\Device\ModelDeviceInterface::getCapabilities() */ public function getAllCapabilities() { $capabilities = array(); foreach (array_reverse($this->modelDevices) as $modelDevice) { /* @var Device\ModelDeviceInterface $modelDevice */ $capabilities = array_merge($capabilities, $modelDevice->getCapabilities()); } $capabilities = array_diff_key($capabilities, array_flip(VirtualCapabilityProvider::getControlCapabilities())); return $capabilities; }