mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-01 00:27:20 -05:00
refactor: derive the spelling index from its table
The index of other system spellings was rebuilt only when the page table changed length, so a table of the same size kept the previous links. The builder now returns its table and set_system_page_map installs it with the index derived from it.
This commit is contained in:
1 parent
c87c73d0a8
commit
a0672d4459
3 files changed
+60
-37
No files matched your search
@@ -69,31 +69,40 @@ class OtherSpellingsOfOneSystem(unittest.TestCase):
|
||||
self.assertEqual(gs._system_emulators("sega-mega-drive", index), ["genesis_plus_gx"])
|
||||
self.assertEqual(gs._system_emulators("nintendo-snes", index), [])
|
||||
|
||||
def _install(self, mapping: dict) -> None:
|
||||
import siterender
|
||||
|
||||
saved = dict(siterender._system_page_map)
|
||||
self.addCleanup(siterender.set_system_page_map, saved)
|
||||
siterender.set_system_page_map(mapping)
|
||||
|
||||
def test_a_profile_spelling_links_to_the_platform_page(self):
|
||||
import siterender
|
||||
|
||||
saved = dict(siterender._system_page_map)
|
||||
self.addCleanup(lambda: (siterender._system_page_map.clear(),
|
||||
siterender._system_page_map.update(saved)))
|
||||
siterender._system_page_map.clear()
|
||||
siterender._system_page_map["sega-mega-drive"] = ("sega", "Mega Drive")
|
||||
self._install({"sega-mega-drive": ("sega", "Mega Drive")})
|
||||
self.assertIn("systems/sega.md#mega-drive", siterender._system_link("sega-megadrive"))
|
||||
siterender._system_page_map["megadrive"] = ("other", "Elsewhere")
|
||||
self._install({"sega-mega-drive": ("sega", "Mega Drive"),
|
||||
"megadrive": ("other", "Elsewhere")})
|
||||
self.assertEqual(siterender._system_link("sega-megadrive"), "sega-megadrive")
|
||||
|
||||
def test_a_system_only_profiles_name_is_placed_by_their_files(self):
|
||||
def test_a_table_of_the_same_size_replaces_the_other_spellings(self):
|
||||
"""The index of other spellings was kept while the table kept its
|
||||
length, so a second table of one entry linked to the first one's page."""
|
||||
import siterender
|
||||
|
||||
saved = dict(siterender._system_page_map)
|
||||
self.addCleanup(lambda: (siterender._system_page_map.clear(),
|
||||
siterender._system_page_map.update(saved)))
|
||||
siterender._system_page_map.clear()
|
||||
self._install({"sega-mega-drive": ("sega", "Mega Drive")})
|
||||
self.assertIn("systems/sega.md#", siterender._system_link("sega-megadrive"))
|
||||
self._install({"sega-mega-drive": ("other", "Elsewhere")})
|
||||
self.assertEqual(siterender._system_link("sega-megadrive"),
|
||||
"[sega-megadrive](systems/other.md#elsewhere)")
|
||||
|
||||
def test_a_system_only_profiles_name_is_placed_by_their_files(self):
|
||||
manufacturers = {"Commodore": {"PET": [{"name": "basic4.bin"}]}}
|
||||
profiles = {"vice_xpet": {"systems": ["commodore-pet"],
|
||||
"files": [{"name": "basic4.bin"}]}}
|
||||
gs._build_system_page_map_from_data(
|
||||
pages = gs._system_pages_from_data(
|
||||
manufacturers, {}, {"files": {}, "indexes": {}}, profiles)
|
||||
self.assertEqual(siterender._system_page_map["commodore-pet"], ("commodore", "PET"))
|
||||
self.assertEqual(pages["commodore-pet"], ("commodore", "PET"))
|
||||
|
||||
|
||||
class ACopyIsOnItsOwnFoldersPage(unittest.TestCase):
|
||||
|
||||
Reference in new issue
Block a user