getFunctionMock('Thrift\ClassLoader', 'apcu_fetch') ->expects($useApcu ? $this->once() : $this->never()) ->with($apcuPrefix . $class) ->willReturn(false); $this->getFunctionMock('Thrift\ClassLoader', 'apcu_store') ->expects($useApcu ? $this->once() : $this->never()) ->with($apcuPrefix . $class, $this->anything()) ->willReturn(true); $loader = new ThriftClassLoader($useApcu, $apcuPrefix); foreach ($namespaces as $namespace => $paths) { $loader->registerNamespace($namespace, $paths); } $loader->register(); $loader->loadClass($class); if ($isClassExist) { $this->assertTrue(class_exists($class, false), "->loadClass() loads '$class'"); } else { $this->assertFalse(class_exists($class, false), "->loadClass() loads '$class'"); } } public function registerNamespaceDataProvider() { yield 'default' => [ 'namespaces' => [ 'A' => __DIR__ . '/Fixtures', ], 'class' => 'A\TestClass', ]; yield 'missedClass' => [ 'namespaces' => [ 'A' => __DIR__ . '/Fixtures', ], 'class' => 'A\MissedClass', 'isClassExist' => false, ]; yield 'pathAsArray' => [ 'namespaces' => [ 'B' => [__DIR__ . '/Fixtures'], ], 'class' => 'B\TestClass', ]; yield 'loadClassWithSlash' => [ 'namespaces' => [ 'C' => __DIR__ . '/Fixtures', ], 'class' => '\C\TestClass', ]; yield 'severalNamespaces' => [ 'namespaces' => [ 'D' => __DIR__ . '/Fixtures', 'E' => __DIR__ . '/Fixtures', ], 'class' => '\E\TestClass', ]; yield 'useApcu' => [ 'namespaces' => [ 'D' => __DIR__ . '/Fixtures', 'E' => __DIR__ . '/Fixtures', ], 'class' => '\E\TestClass', 'isClassExist' => true, 'useApcu' => true, 'apcuPrefix' => 'APCU_PREFIX', ]; } }