/**
  * @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'));
 }
Ejemplo n.º 2
0
 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();
 }
Ejemplo n.º 3
0
 /**
  * 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;
 }
Ejemplo n.º 4
0
 /**
  * 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;
 }