election = new Election; $this->election->parseCandidates('A;B;C'); $this->votes_manager = $this->election->getVotesManager(); } public function testOffsetSet(): never { $this->expectException(VoteNotLinkedException::class); $this->expectExceptionMessage('The vote is not linked to an election'); $vote = new Vote([]); // add valid vote $this->votes_manager[] = $vote; self::assertSame($vote, $this->votes_manager->getVotesList()[0]); // add invalid vote $this->votes_manager[] = null; } public function testOffsetSetArgumentType(): never { $this->expectException(VoteManagerException::class); // add invalid vote $this->votes_manager[] = new \stdClass; } public function testOffsetUnset(): void { $before_list = $this->votes_manager->getVotesList(); // unset non existent vote unset($this->votes_manager[0]); self::assertSame($before_list, $this->votes_manager->getVotesList()); // unset existing vote $vote = new Vote([]); $vote->registerLink($this->election); $this->votes_manager[] = $vote; unset($this->votes_manager[0]); self::assertEmpty($this->votes_manager->getVotesList()); } public function testGetVoteKey(): void { self::assertNull($this->votes_manager->getVoteKey(new Vote([]))); } public function testGetVotesList(): void { // With Election self::assertEmpty($this->votes_manager->getVotesList()); $this->election->addCandidate('candidate'); $this->election->addVote(new Vote(['candidate'])); self::assertNotEmpty($this->votes_manager->getVotesList()); } public function testGetVotesListGenerator(): void { $this->election->parseVotes('A>B>C * 10;tag42 || C>B>A * 42'); $votesListGenerator = []; foreach ($this->election->getVotesListGenerator() as $key => $value) { $votesListGenerator[$key] = $value; } self::assertEquals($this->election->getVotesList(), $votesListGenerator); self::assertCount(52, $votesListGenerator); $votesListGenerator = []; foreach ($this->election->getVotesListGenerator('tag42') as $key => $value) { $votesListGenerator[$key] = $value; } self::assertEquals($this->election->getVotesList('tag42'), $votesListGenerator); self::assertCount(42, $votesListGenerator); } }