public function testReverseCollection()
 {
     $collection = new Collection();
     $collection[] = 1;
     $collection[] = 2;
     $collection[] = 3;
     $reverse = ArrayHelper::reverse($collection);
     $expected = new Collection();
     $expected[] = 3;
     $expected[] = 2;
     $expected[] = 1;
     $this->assertEquals($expected, $reverse);
 }
 /**
  * @param Model|Model[] $models
  * @param Context $context
  * @param null $resourceDefinition
  * @return array|\mixed[]
  */
 protected function modelsToResources($models, Context $context, $resourceDefinition = null)
 {
     if (ArrayHelper::isIterable($models)) {
         return $this->toResources($models, $context, $resourceDefinition)->toArray();
     } elseif ($models instanceof Model) {
         return $this->toResource($models, $context, $resourceDefinition)->toArray();
     } else {
         return $models;
     }
 }
 /**
  * @param ResourceDefinition|string $resourceDefinition
  * @param mixed $entities
  * @param ContextContract $context
  * @param RelationshipValue $parent
  * @param null $parentEntity
  * @return ResourceCollection
  * @throws InvalidContextAction
  * @throws InvalidEntityException
  */
 public function toResources($resourceDefinition, $entities, ContextContract $context, RelationshipValue $parent = null, $parentEntity = null) : ResourceCollection
 {
     if (!ArrayHelper::isIterable($entities)) {
         throw new InvalidEntityException(__CLASS__ . '::toResources expects an iterable object of entities.');
     }
     $resourceDefinition = ResourceDefinitionLibrary::make($resourceDefinition);
     $out = new ResourceCollection();
     foreach ($entities as $entity) {
         $out->add($this->toResource($resourceDefinition, $entity, $context, $parent, $parentEntity));
     }
     $context->getProcessors()->processCollection($this, $out, $resourceDefinition, $context, $parent, $parentEntity);
     return $out;
 }
 /**
  * @param array $properties
  * @return PaginationBuilder
  */
 public function setLast($properties) : PaginationBuilder
 {
     if (!ArrayHelper::hasArrayAccess($properties)) {
         throw new InvalidArgumentException("Could not read properties: properties must have ArrayAccess.");
     }
     $this->last = $properties;
     return $this;
 }