wikipedia = new Wikipedia(); } public function test_query_returns_missing_for_nonsense_title(): void { $output = $this->wikipedia->query_people_info(["This article does not exist."], resolve_moves: false); self::assertEmpty($output->results); self::assertEmpty($output->redirects->getIterator()); self::assertContains("This article does not exist.", $output->missing); } public function test_query_returns_redirected_for_normalized_title(): void { $output = $this->wikipedia->query_people_info(["donald Trump"], resolve_moves: false); self::assertArrayHasKey("Donald Trump", $output->results); self::assertEquals("Donald Trump", $output->redirects->resolve("donald Trump")); self::assertEmpty($output->missing); } public function test_query_returns_redirected_for_alternative_title(): void { $output = $this->wikipedia->query_people_info(["Donald J. Trump"], resolve_moves: false); self::assertArrayHasKey("Donald Trump", $output->results); self::assertEquals("Donald Trump", $output->redirects->resolve("Donald J. Trump")); self::assertEmpty($output->missing); } public function test_query_returns_redirected_for_normalized_alternative_title(): void { $output = $this->wikipedia->query_people_info(["donald J. Trump"], resolve_moves: false); self::assertArrayHasKey("Donald Trump", $output->results); self::assertEquals("Donald Trump", $output->redirects->resolve("donald J. Trump")); self::assertEmpty($output->missing); } public function test_query_returns_no_missing_or_redirects_for_correct_title(): void { $output = $this->wikipedia->query_people_info(["Donald Trump"], resolve_moves: false); self::assertArrayHasKey("Donald Trump", $output->results); self::assertEmpty($output->redirects->getIterator()); self::assertEmpty($output->missing); } public function test_query_returns_missing_if_page_deleted_and_moved_but_resolve_is_disabled(): void { $output = $this->wikipedia->query_people_info(["MILK FART"], resolve_moves: false); self::assertEmpty($output->results); self::assertEmpty($output->redirects->getIterator()); self::assertContains("MILK FART", $output->missing); } public function test_query_resolves_move_if_page_was_deleted(): void { $output = $this->wikipedia->query_people_info(["MILK FART"], resolve_moves: true); self::assertArrayHasKey("Ben Shapiro", $output->results); self::assertEquals("Ben Shapiro", $output->redirects->resolve("MILK FART")); self::assertEmpty($output->missing); } public function test_query_resolves_move_and_redirect_if_page_was_deleted(): void { $output = $this->wikipedia->query_people_info(["Asdfasdf"], resolve_moves: true); self::assertArrayHasKey("Tom E. Beer", $output->results); self::assertEquals("Tom E. Beer", $output->redirects->resolve("Asdfasdf")); self::assertEmpty($output->missing); } public function test_query_detects_non_person_page(): void { $output = $this->wikipedia->query_people_info(["Milk"], resolve_moves: false); self::assertEquals(ArticleType::Other, $output->results["Milk"]["type"]); } public function test_query_detects_disambiguation_page(): void { $output = $this->wikipedia->query_people_info(["Joseph"], resolve_moves: false); self::assertEquals(ArticleType::Disambiguation, $output->results["Joseph"]["type"]); } public function test_query_detects_index_page(): void { $output = $this->wikipedia->query_people_info(["ASDF"], resolve_moves: false); self::assertEquals(ArticleType::Disambiguation, $output->results["ASDF"]["type"]); } public function test_query_detects_person_page(): void { $output = $this->wikipedia->query_people_info(["Joe Biden"], resolve_moves: false); self::assertEquals(ArticleType::Person, $output->results["Joe Biden"]["type"]); } public function test_query_detects_alive_person(): void { $output = $this->wikipedia->query_people_info(["ContraPoints"], resolve_moves: false); self::assertEquals(PersonStatus::Alive, $output->results["ContraPoints"]["status"]); } public function test_query_detects_dead_person(): void { $output = $this->wikipedia->query_people_info(["Sophie (musician)"], resolve_moves: false); self::assertEquals(PersonStatus::Dead, $output->results["Sophie (musician)"]["status"]); } public function test_query_detects_suicide_person(): void { $output = $this->wikipedia->query_people_info(["Adolf Hitler"], resolve_moves: false); self::assertEquals(PersonStatus::Dead, $output->results["Adolf Hitler"]["status"]); } public function test_query_detects_missing_person(): void { $output = $this->wikipedia->query_people_info(["Sada Abe"], resolve_moves: false); self::assertEquals(PersonStatus::Dead, $output->results["Sada Abe"]["status"]); } public function test_query_detects_possibly_living_person(): void { $output = $this->wikipedia->query_people_info(["Angela Anderes"], resolve_moves: false); self::assertEquals(PersonStatus::PossiblyAlive, $output->results["Angela Anderes"]["status"]); } }