$this->assertIdentical($actual_result,$expected_result,format_string('Tried matching the path <code>@path</code> to the pattern <pre>@patterns</pre> - expected @expected, got @actual.',array('@path'=>$path,'@patterns'=>$patterns,'@expected'=>var_export($expected_result,TRUE),'@actual'=>var_export($actual_result,TRUE))));
}
}
}
/**
* Helper function for testDrupalMatchPath(): set up an array of test cases.
*
* @return
* An array of test cases to cycle through.
*/
privatefunctiondrupalMatchPathTests(){
returnarray(
// Single absolute paths.
'example/1'=>array(
'example/1'=>TRUE,
'example/2'=>FALSE,
'test'=>FALSE,
),
// Single paths with wildcards.
'example/*'=>array(
'example/1'=>TRUE,
'example/2'=>TRUE,
'example/3/edit'=>TRUE,
'example/'=>TRUE,
'example'=>FALSE,
'test'=>FALSE,
),
// Single paths with multiple wildcards.
'node/*/revisions/*'=>array(
'node/1/revisions/3'=>TRUE,
'node/345/revisions/test'=>TRUE,
'node/23/edit'=>FALSE,
'test'=>FALSE,
),
// Single paths with '<front>'.
'<front>'=>array(
$this->front=>TRUE,
"$this->front/"=>FALSE,
"$this->front/edit"=>FALSE,
'node'=>FALSE,
''=>FALSE,
),
// Paths with both '<front>' and wildcards (should not work).
'<front>/*'=>array(
$this->front=>FALSE,
"$this->front/"=>FALSE,
"$this->front/edit"=>FALSE,
'node/12'=>FALSE,
''=>FALSE,
),
// Multiple paths with the \n delimiter.
"node/*\nnode/*/edit"=>array(
'node/1'=>TRUE,
'node/view'=>TRUE,
'node/32/edit'=>TRUE,
'node/delete/edit'=>TRUE,
'node/50/delete'=>TRUE,
'test/example'=>FALSE,
),
// Multiple paths with the \r delimiter.
"user/*\rexample/*"=>array(
'user/1'=>TRUE,
'example/1'=>TRUE,
'user/1/example/1'=>TRUE,
'user/example'=>TRUE,
'test/example'=>FALSE,
'user'=>FALSE,
'example'=>FALSE,
),
// Multiple paths with the \r\n delimiter.
"test\r\n<front>"=>array(
'test'=>TRUE,
$this->front=>TRUE,
'example'=>FALSE,
),
// Test existing regular expressions (should be escaped).
$this->assertEquals($actual_result,$expected_result,String::format('Tried matching the path <code>@path</code> to the pattern <pre>@patterns</pre> - expected @expected, got @actual.',array(
'@path'=>$path,
'@patterns'=>$patterns,
'@expected'=>var_export($expected_result,TRUE),
'@actual'=>var_export($actual_result,TRUE),
)));
}
}
/**
* Provides test path data.
*
* @return array
* A nested array of pattern arrays and path arrays.
*/
publicfunctiongetMatchPathData(){
returnarray(
array(
// Single absolute paths.
'example/1',
array(
'example/1'=>TRUE,
'example/2'=>FALSE,
'test'=>FALSE,
),
),
array(
// Single paths with wildcards.
'example/*',
array(
'example/1'=>TRUE,
'example/2'=>TRUE,
'example/3/edit'=>TRUE,
'example/'=>TRUE,
'example'=>FALSE,
'test'=>FALSE,
),
),
array(
// Single paths with multiple wildcards.
'node/*/revisions/*',
array(
'node/1/revisions/3'=>TRUE,
'node/345/revisions/test'=>TRUE,
'node/23/edit'=>FALSE,
'test'=>FALSE,
),
),
array(
// Single paths with '<front>'.
"<front>",
array(
'dummy'=>TRUE,
"dummy/"=>FALSE,
"dummy/edit"=>FALSE,
'node'=>FALSE,
''=>FALSE,
),
),
array(
// Paths with both '<front>' and wildcards (should not work).
"<front>/*",
array(
'dummy'=>FALSE,
'dummy/'=>FALSE,
'dummy/edit'=>FALSE,
'node/12'=>FALSE,
''=>FALSE,
),
),
array(
// Multiple paths with the \n delimiter.
"node/*\nnode/*/edit",
array(
'node/1'=>TRUE,
'node/view'=>TRUE,
'node/32/edit'=>TRUE,
'node/delete/edit'=>TRUE,
'node/50/delete'=>TRUE,
'test/example'=>FALSE,
),
),
array(
// Multiple paths with the \r delimiter.
"user/*\rexample/*",
array(
'user/1'=>TRUE,
'example/1'=>TRUE,
'user/1/example/1'=>TRUE,
'user/example'=>TRUE,
'test/example'=>FALSE,
'user'=>FALSE,
'example'=>FALSE,
),
),
array(
// Multiple paths with the \r\n delimiter.
"test\r\n<front>",
array(
'test'=>TRUE,
'dummy'=>TRUE,
'example'=>FALSE,
),
),
array(
// Test existing regular expressions (should be escaped).