function testFiltersWithGroupedGroup() { $filterGroup1 = new \Rhubarb\Stem\Filters\Group("And"); $filterGroup1->addFilters(new \Rhubarb\Stem\Filters\Contains("Forename", "Jo", true), new \Rhubarb\Stem\Filters\Contains("Surname", "Jo", true)); $filterGroup2 = new \Rhubarb\Stem\Filters\Group("Or"); $filterGroup2->addFilters(new \Rhubarb\Stem\Filters\Contains("Surname", "Luc", true), new \Rhubarb\Stem\Filters\LessThan("DateOfBirth", "1980-01-01", true)); $filterGroup = new \Rhubarb\Stem\Filters\Group("Or"); $filterGroup->addFilters($filterGroup1, $filterGroup2); $this->list->Not($filterGroup); $this->assertCount(1, $this->list); $this->assertContains("Smithe", $this->list[0]->Surname); }
function testXOR() { $filterOne = new \Rhubarb\Stem\Filters\Contains("Forename", "Jo", true); $filterTwo = new \Rhubarb\Stem\Filters\Contains("Surname", "Jo", true); $filterAnd = new \Rhubarb\Stem\Filters\Group("And"); $filterAnd->addFilters($filterOne, $filterTwo); $filterOr = new \Rhubarb\Stem\Filters\Group("Or"); $filterOr->addFilters($filterOne, $filterTwo); $filterNotAnd = new \Rhubarb\Stem\Filters\Not($filterAnd); $filterXor = new \Rhubarb\Stem\Filters\Group("And"); $filterXor->addFilters($filterNotAnd, $filterOr); $this->list->filter($filterXor); $this->assertCount(2, $this->list); $this->assertContains("Luc", $this->list[0]->Surname); }