assertFalse($orSpec->isSatisfiedBy(new Item(100))); $this->assertTrue($orSpec->isSatisfiedBy(new Item(51))); $this->assertTrue($orSpec->isSatisfiedBy(new Item(150))); } public function testCanAnd() { $spec1 = new PriceSpecification(50, 100); $spec2 = new PriceSpecification(80, 200); $orSpec = new AndSpecification($spec1, $spec2); $this->assertFalse($orSpec->isSatisfiedBy(new Item(150))); $this->assertFalse($orSpec->isSatisfiedBy(new Item(1))); $this->assertFalse($orSpec->isSatisfiedBy(new Item(51))); $this->assertTrue($orSpec->isSatisfiedBy(new Item(100))); } public function testCanNot() { $spec1 = new PriceSpecification(50, 100); $orSpec = new NotSpecification($spec1); $this->assertTrue($orSpec->isSatisfiedBy(new Item(150))); $this->assertFalse($orSpec->isSatisfiedBy(new Item(50))); } }