<?php
declare(strict_types=1);

/**
 * @see https://www.jetbrains.com/help/phpstorm/ide-advanced-metadata.html
 */
namespace PHPSTORM_META {

    override(\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(0), type(0));

    // TYPO3 testing framework
    // The accesible mock will be of type `self` as well as `MockObject` and `AccessibleObjectInterface`.
    override(
        \TYPO3\TestingFramework\Core\BaseTestCase::getAccessibleMock(0),
        map(
            [
                '' => '@|\\PHPUnit\\Framework\\MockObject\\MockObject'
                    . '|\\TYPO3\\TestingFramework\\Core\\AccessibleObjectInterface',
            ]
        )
    );
    override(
        \TYPO3\TestingFramework\Core\BaseTestCase::getAccessibleMockForAbstractClass(0),
        map(
            [
                '' => '@|\\PHPUnit\\Framework\\MockObject\\MockObject'
                    . '|\\TYPO3\TestingFramework\\Core\\AccessibleObjectInterface',
            ]
        )
    );

    // Nimut testing framework
    // The accesible mock will be of type `self` as well as `MockObject` and `AccessibleMockObjectInterface`.
    override(
        \Nimut\TestingFramework\TestCase\AbstractTestCase::getAccessibleMock(0),
        map(
            [
                '' => '@|\\PHPUnit\\Framework\\MockObject\\MockObject'
                    . '|\\Nimut\\TestingFramework\\MockObject\\AccessibleMockObjectInterface',
            ]
        )
    );
    override(
        \Nimut\TestingFramework\TestCase\AbstractTestCase::getAccessibleMockForAbstractClass(0),
        map(
            [
                '' => '@|\\PHPUnit\\Framework\\MockObject\\MockObject'
                    . '|\\Nimut\TestingFramework\\MockObject\\AccessibleMockObjectInterface',
            ]
        )
    );
}