public function evaluate(array $ini)
	{
		$test = $this->getTest();
		$evalClass = "\\Psecio\\Iniscan\\Operation\\Operation".ucwords(strtolower($test->operation));

		if (!class_exists($evalClass)) {
			throw new \InvalidArgumentException('Invalid operation "'.$test->operation.'"');
		}
		$value = (isset($test->value)) ? $test->value : null;
		$this->setValue($value);

		$evalInstance = new $evalClass($this->getSection());

		if (isset($test->version) && !$this->isVersion($test->version)) {
			$this->na();
		} else {
			($evalInstance->execute($test->key, $value, $ini) === false)
				? $this->fail() : $this->pass();
		}
	}