public function providerForTestEvaluate()
{
// Mocks for testing Content & VersionInfo objects, should only be used once because of expect rules.
$contentMock = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\Content\\Content', array(), array(), '', false);
$versionInfoMock = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\Content\\VersionInfo', array(), array(), '', false);
$contentMock->expects($this->once())->method('getVersionInfo')->will($this->returnValue($versionInfoMock));
$versionInfoMock->expects($this->once())->method('getContentInfo')->will($this->returnValue(new ContentInfo(array('sectionId' => 2))));
$versionInfoMock2 = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\Content\\VersionInfo', array(), array(), '', false);
$versionInfoMock2->expects($this->once())->method('getContentInfo')->will($this->returnValue(new ContentInfo(array('sectionId' => 2))));
return array(array('limitation' => new SectionLimitation(), 'object' => new ContentInfo(array('sectionId' => 55)), 'targets' => array(new Location()), 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SectionLimitation(array('limitationValues' => array('2'))), 'object' => new ContentInfo(array('sectionId' => 55)), 'targets' => array(new Location(array('pathString' => '/1/55'))), 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SectionLimitation(array('limitationValues' => array('2'))), 'object' => new ContentInfo(array('sectionId' => 2)), 'targets' => array(new Location(array('pathString' => '/1/2/'))), 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SectionLimitation(array('limitationValues' => array('2'))), 'object' => new ContentInfo(array('sectionId' => 2)), 'targets' => null, 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SectionLimitation(array('limitationValues' => array('2', '43'))), 'object' => new ContentInfo(array('sectionId' => 55)), 'targets' => null, 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SectionLimitation(array('limitationValues' => array('2'))), 'object' => new ContentInfo(array('published' => false, 'sectionId' => 2)), 'targets' => null, 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SectionLimitation(array('limitationValues' => array('2', '43'))), 'object' => new ContentInfo(array('published' => false, 'sectionId' => 55)), 'targets' => null, 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SectionLimitation(array('limitationValues' => array('2'))), 'object' => $contentMock, 'targets' => array(new Location(array('pathString' => '/1/2/'))), 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SectionLimitation(array('limitationValues' => array('2'))), 'object' => $versionInfoMock2, 'targets' => array(new Location(array('pathString' => '/1/2/'))), 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SectionLimitation(array('limitationValues' => array('2'))), 'object' => new ContentCreateStruct(), 'targets' => array(), 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SectionLimitation(array('limitationValues' => array('2', '43'))), 'object' => new ContentCreateStruct(array('sectionId' => 55)), 'targets' => array(new LocationCreateStruct(array('parentLocationId' => 55))), 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SectionLimitation(array('limitationValues' => array('2', '43'))), 'object' => new ContentCreateStruct(array('sectionId' => 43)), 'targets' => array(new LocationCreateStruct(array('parentLocationId' => 55))), 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SectionLimitation(), 'object' => new ObjectStateLimitation(), 'targets' => array(new LocationCreateStruct(array('parentLocationId' => 43))), 'expected' => LimitationType::ACCESS_ABSTAIN), array('limitation' => new SectionLimitation(), 'object' => new ContentInfo(array('published' => true)), 'targets' => array(new ObjectStateLimitation()), 'expected' => LimitationType::ACCESS_ABSTAIN));
}