public function testLoadSubject()
{
$reflection = new ReflectionClass();
$reflection->class = 'Test';
$hierarchy = new ReflectionHierarchy();
$hierarchy->addReflectionClass($reflection);
$method = new ReflectionMethod();
$method->reflectionClass = $reflection;
$method->class = 'Test';
$method->name = 'benchFoo';
$method->comment = <<<'EOT'
/**
* @BeforeMethods({"beforeOne", "beforeTwo"})
* @AfterMethods({"afterOne", "afterTwo"})
* @Groups({"groupOne", "groupTwo"})
* @Iterations(50)
* @ParamProviders({"ONE", "TWO"})
* @Revs(1000)
* @Skip()
* @Sleep(500)
* @OutputTimeUnit("seconds")
* @OutputMode("throughput")
* @Warmup(501)
*/
EOT;
$reflection->methods[$method->name] = $method;
$metadata = $this->createDriver()->getMetadataForHierarchy($hierarchy);
$subjects = $metadata->getSubjects();
$this->assertCount(1, $subjects);
$metadata = reset($subjects);
$this->assertEquals(['beforeOne', 'beforeTwo'], $metadata->getBeforeMethods());
$this->assertEquals(['afterOne', 'afterTwo'], $metadata->getAfterMethods());
$this->assertEquals(['groupOne', 'groupTwo'], $metadata->getGroups());
$this->assertEquals([50], $metadata->getIterations());
$this->assertEquals(['ONE', 'TWO'], $metadata->getParamProviders());
$this->assertEquals([1000], $metadata->getRevs());
$this->assertEquals(500, $metadata->getSleep());
$this->assertEquals('seconds', $metadata->getOutputTimeUnit());
$this->assertEquals('throughput', $metadata->getOutputMode());
$this->assertEquals([501], $metadata->getWarmup());
$this->assertTrue($metadata->getSkip());
}