Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
Queue
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
3 / 3
4
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 enqueue
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 dequeue
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3/**
4 * @license MIT
5 * @author hazuki3417<hazuki3417@gmail.com>
6 * @copyright 2021 hazuki3417 all rights reserved.
7 */
8
9namespace Selen\Data\Structure;
10
11use Selen\Data\Type;
12
13final class Queue extends AbstractQueue
14{
15    /** @var string 型名またはクラス名 */
16    private string $typeName;
17
18    public function __construct(string $typeName)
19    {
20        $this->typeName = $typeName;
21    }
22
23    public function enqueue($object): void
24    {
25        $isExpectedType = Type::validate($object, $this->typeName);
26
27        if (!$isExpectedType) {
28            throw new \InvalidArgumentException('Invalid argument type.');
29        }
30        $this->objects[] = $object;
31    }
32
33    public function dequeue()
34    {
35        return array_shift($this->objects);
36    }
37}