params = array('app' => false, 'plugin' => false, 'group' => false); $coverage = array(); $this->Coverage = new HtmlCoverageReport($coverage, $reporter); } /** * test getting the path filters. * * @return void */ function testGetPathFilter() { $this->Coverage->appTest = false; $result = $this->Coverage->getPathFilter(); $this->assertEquals(TEST_CAKE_CORE_INCLUDE_PATH, $result); $this->Coverage->appTest = true; $result = $this->Coverage->getPathFilter(); $this->assertEquals(ROOT . DS . APP_DIR . DS, $result); $this->Coverage->appTest = false; $this->Coverage->pluginTest = 'test_plugin'; $result = $this->Coverage->getPathFilter(); $this->assertEquals(ROOT . DS . APP_DIR . DS . 'plugins' . DS .'test_plugin' . DS, $result); } /** * test filtering coverage data. * * @return void */ function testFilterCoverageDataByPathRemovingElements() { $data = array( array( 'files' => array( TEST_CAKE_CORE_INCLUDE_PATH . 'dispatcher.php' => array( 10 => -1, 12 => 1 ), APP . 'app_model.php' => array( 50 => 1, 52 => -1 ) ) ) ); $this->Coverage->setCoverage($data); $result = $this->Coverage->filterCoverageDataByPath(TEST_CAKE_CORE_INCLUDE_PATH); $this->assertTrue(isset($result[TEST_CAKE_CORE_INCLUDE_PATH . 'dispatcher.php'])); $this->assertFalse(isset($result[APP . 'app_model.php'])); } /** * test that filterCoverageDataByPath correctly merges data sets in each test run. * * @return void */ function testFilterCoverageDataCorrectlyMergingValues() { $data = array( array( 'files' => array( '/something/dispatcher.php' => array( 10 => 1, 12 => 1 ), ), 'executable' => array( '/something/dispatcher.php' => array( 10 => -1 ) ) ), array( 'files' => array( '/something/dispatcher.php' => array( 10 => 1, 50 => 1, ), ), 'executable' => array( '/something/dispatcher.php' => array( 12 => -1, 51 => -1 ) ) ), ); $this->Coverage->setCoverage($data); $result = $this->Coverage->filterCoverageDataByPath('/something/'); $path = '/something/dispatcher.php'; $this->assertTrue(isset($result[$path])); $this->assertEquals(1, $result[$path][10]); $this->assertEquals(1, $result[$path][12]); $this->assertEquals(1, $result[$path][50]); $this->assertEquals(-1, $result[$path][51]); } /** * test the features of getExecutableLines * * @return void */ function testGetExecutableLines() { $contents = << PHP; $result = $this->Coverage->getExecutableLines(explode("\n", $contents)); $expected = array( 0 => false, 1 => false, 2 => false, 3 => false, 4 => true, 5 => true, 6 => false, 7 => true, 8 => true, 9 => true, 10 => true, 11 => false, 12 => true, 13 => false, 14 => false, 15 => false ); $this->assertEquals($expected, $result); } /** * test generating HTML reports from file arrays. * * @return void */ function testGenerateDiff() { $file = array( 'line 1', 'line 2', 'line 3', 'line 4', 'line 5', 'line 6', 'line 7', 'line 8', 'line 9', 'line 10', ); $coverage = array( 1 => 1, 2 => -2, 3 => 1, 4 => 1, 5 => -1, 6 => 1, 7 => 1, 8 => 1, 9 => -1, 10 => 1, ); $result = $this->Coverage->generateDiff('myfile.php', $file, $coverage); $this->assertRegExp('/

myfile\.php Code coverage\: \d+\.?\d*\%<\/h2>/', $result); $this->assertRegExp('/
/', $result); $this->assertRegExp('/
/', $result);
		foreach ($file as $i => $line) {
			$this->assertTrue(strpos($line, $result) !== 0, 'Content is missing ' . $i);
			$class = 'uncovered';
			if ($coverage[$i + 1] > 0) {
				$class = 'covered';
			}
			$this->assertTrue(strpos($class, $result) !== 0, 'Class name is wrong ' . $i);
		}
	}

/**
 * teardown
 *
 * @return void
 */
	function tearDown() {
		unset($this->Coverage);
	}
}