+++ /dev/null
-<?php
-
-/*
- * This file is part of the Behat Testwork.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Testwork\Specification;
-
-use Behat\Testwork\Specification\Locator\SpecificationLocator;
-use Behat\Testwork\Suite\Suite;
-
-/**
- * Finds test specifications for provided suites using registered locators.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-final class SpecificationFinder
-{
- /**
- * @var SpecificationLocator[]
- */
- private $specificationLocators = array();
-
- /**
- * Registers specification locator.
- *
- * @param SpecificationLocator $locator
- */
- public function registerSpecificationLocator(SpecificationLocator $locator)
- {
- $this->specificationLocators[] = $locator;
- }
-
- /**
- * Returns array of strings representing examples of supported specification locators.
- *
- * @return string[]
- */
- public function getExampleLocators()
- {
- $examples = array();
- foreach ($this->specificationLocators as $locator) {
- $examples = array_merge($examples, $locator->getLocatorExamples());
- }
-
- return $examples;
- }
-
- /**
- * Finds all specifications for all provided suites matching provided locator and wraps them into a spec iterator.
- *
- * @param Suite[] $suites
- * @param null|string $locator
- *
- * @return SpecificationIterator[]
- */
- public function findSuitesSpecifications(array $suites, $locator = null)
- {
- $iterators = array();
- foreach ($suites as $suite) {
- $iterators = array_merge($iterators, $this->findSuiteSpecifications($suite, $locator));
- }
-
- return $iterators;
- }
-
- /**
- * Creates suite specification iterator for provided locator.
- *
- * @param Suite $suite
- * @param null|string $locator
- *
- * @return SpecificationIterator[]
- */
- private function findSuiteSpecifications(Suite $suite, $locator = null)
- {
- $iterators = array();
- foreach ($this->specificationLocators as $specificationLocator) {
- $iterators[] = $specificationLocator->locateSpecifications($suite, $locator);
- }
-
- return $iterators;
- }
-}