assertInstanceOf(ModifierStack::class, $stack); } public function testPush(): void { $stack = new ModifierStack([]); $result = $stack->push(new GreyscaleModifier()); $this->assertInstanceOf(ModifierStack::class, $result); } public function testApply(): void { $image = Mockery::mock(ImageInterface::class); $modifier1 = Mockery::mock(ModifierInterface::class)->makePartial(); $modifier1->shouldReceive('apply')->once()->with($image); $modifier2 = Mockery::mock(ModifierInterface::class)->makePartial(); $modifier2->shouldReceive('apply')->once()->with($image); $stack = new ModifierStack([$modifier1, $modifier2]); $result = $stack->apply($image); $this->assertInstanceOf(ImageInterface::class, $result); } }