assertNull($elimination->getScreenColour(null)); } public function testGetScreenColourReturnsNullForUnknownName(): void { $elimination = new Elimination(new Quiz()); $elimination->data = $this->colours(['Tom' => Elimination::SCREEN_GREEN]); $this->assertNull($elimination->getScreenColour('Claudia')); } public function testGetScreenColourReturnsColourForKnownName(): void { $elimination = new Elimination(new Quiz()); $elimination->data = $this->colours(['Tom' => Elimination::SCREEN_GREEN, 'Claudia' => Elimination::SCREEN_RED]); $this->assertSame(Elimination::SCREEN_RED, $elimination->getScreenColour('Claudia')); } public function testUpdateFromInputBagUpdatesKnownColours(): void { $elimination = new Elimination(new Quiz()); $elimination->data = $this->colours(['Tom' => Elimination::SCREEN_GREEN, 'Claudia' => Elimination::SCREEN_RED]); $elimination->updateFromInputBag($this->inputBag(['colour-tom' => Elimination::SCREEN_RED])); $this->assertSame(Elimination::SCREEN_RED, $elimination->data['Tom']); $this->assertSame(Elimination::SCREEN_RED, $elimination->data['Claudia']); } public function testUpdateFromInputBagIgnoresMissingInput(): void { $elimination = new Elimination(new Quiz()); $elimination->data = $this->colours(['Tom' => Elimination::SCREEN_GREEN]); $elimination->updateFromInputBag($this->inputBag([])); $this->assertSame(Elimination::SCREEN_GREEN, $elimination->data['Tom']); } public function testUpdateFromInputBagReturnsSelf(): void { $elimination = new Elimination(new Quiz()); $this->assertSame($elimination, $elimination->updateFromInputBag($this->inputBag([]))); } /** * @param array $colours * * @return array */ private function colours(array $colours): array { return $colours; } /** * @param array $parameters * * @return InputBag */ private function inputBag(array $parameters): InputBag { /** @var InputBag $inputBag */ $inputBag = new InputBag($parameters); return $inputBag; } }