quillstack/unit-tests

View on GitHub
src/AssertEqual.php

Summary

Maintainability
A
35 mins
Test Coverage
<?php

declare(strict_types=1);

namespace Quillstack\UnitTests;

use Quillstack\UnitTests\Exceptions\Types\Arrays\ArrayValuesNotEqualException;
use Quillstack\UnitTests\Exceptions\Types\Objects\ObjectValuesNotEqualException;
use Quillstack\UnitTests\Exceptions\Types\Strings\StringValuesNotEqualException;
use Quillstack\UnitTests\Exceptions\Types\ValueTypesNotEqualException;
use Quillstack\UnitTests\Exceptions\ValuesNotEqualException;

class AssertEqual
{
    public function equal(mixed $expected, mixed $value): void
    {
        if ($expected === $value) {
            return;
        }

        if (gettype($expected) !== gettype($value)) {
            throw new ValueTypesNotEqualException(gettype($expected) . ' !== ' . gettype($value));
        }

        if (is_object($expected) && $expected == $value) {
            return;
        }

        if (is_array($expected)) {
            throw new ArrayValuesNotEqualException();
        }

        if (is_string($expected)) {
            throw new StringValuesNotEqualException();
        }

        if (is_object($expected)) {
            throw new ObjectValuesNotEqualException();
        }

        throw new ValuesNotEqualException();
    }
}