/**
  * @dataProvider instanceProvider
  *
  * @since 1.0
  *
  * @param SomeProperty $description
  */
 public function testIsSubProperty(SomeProperty $description)
 {
     $isSubProperty = $description->isSubProperty();
     $this->assertInternalType('boolean', $isSubProperty);
     $newInstance = new SomeProperty($description->getPropertyId(), $description->getSubDescription(), $isSubProperty);
     $this->assertEquals($isSubProperty, $newInstance->isSubProperty(), 'Is sub property is returned as it was passed to the constructor');
 }
 private function buildQueryForSomeProperty(SomeProperty $someProperty, Expr $expr)
 {
     if ($someProperty->isSubProperty()) {
         throw new FeatureNotSupportedException('Sub-properties are not supported yet');
     }
     $propertyIdValue = $someProperty->getPropertyId();
     if (!$propertyIdValue instanceof EntityIdValue) {
         throw new FeatureNotSupportedException('PropertyId should be an EntityIdValue');
     }
     $propertyId = $propertyIdValue->getEntityId();
     if (!$propertyId instanceof PropertyId) {
         throw new FeatureNotSupportedException('PropertyId should be a PropertyId');
     }
     return $this->buildQueryForDescription($someProperty->getSubDescription(), $expr, $propertyId);
 }