50 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import unittest | ||
|  | from ..MuseDashCollection import MuseDashCollections | ||
|  | 
 | ||
|  | 
 | ||
|  | class CollectionsTest(unittest.TestCase): | ||
|  |     REMOVED_SONGS = [ | ||
|  |         "CHAOS Glitch", | ||
|  |         "FM 17314 SUGAR RADIO", | ||
|  |     ] | ||
|  | 
 | ||
|  |     def test_all_names_are_ascii(self) -> None: | ||
|  |         bad_names = list() | ||
|  |         collection = MuseDashCollections() | ||
|  |         for name in collection.song_items.keys(): | ||
|  |             for c in name: | ||
|  |                 # This is taken directly from OoT. Represents the generally excepted characters. | ||
|  |                 if (0x20 <= ord(c) < 0x7e): | ||
|  |                     continue | ||
|  | 
 | ||
|  |                 bad_names.append(name) | ||
|  |                 break | ||
|  | 
 | ||
|  |         self.assertEqual(len(bad_names), 0, f"Muse Dash has {len(bad_names)} songs with non-ASCII characters.\n{bad_names}") | ||
|  | 
 | ||
|  |     def test_ids_dont_change(self) -> None: | ||
|  |         collection = MuseDashCollections() | ||
|  |         itemsBefore = {name: code for name, code in collection.item_names_to_id.items()} | ||
|  |         locationsBefore = {name: code for name, code in collection.location_names_to_id.items()} | ||
|  | 
 | ||
|  |         collection.__init__() | ||
|  |         itemsAfter = {name: code for name, code in collection.item_names_to_id.items()} | ||
|  |         locationsAfter = {name: code for name, code in collection.location_names_to_id.items()} | ||
|  | 
 | ||
|  |         self.assertDictEqual(itemsBefore, itemsAfter, "Item ID changed after secondary init.") | ||
|  |         self.assertDictEqual(locationsBefore, locationsAfter, "Location ID changed after secondary init.") | ||
|  | 
 | ||
|  |     def test_free_dlc_included_in_base_songs(self) -> None: | ||
|  |         collection = MuseDashCollections() | ||
|  |         songs = collection.get_songs_with_settings(False, False, 0, 11) | ||
|  | 
 | ||
|  |         self.assertIn("Glimmer", songs, "Budget Is Burning Vol.1 is not being included in base songs") | ||
|  |         self.assertIn("Out of Sense", songs, "Budget Is Burning: Nano Core is not being included in base songs") | ||
|  | 
 | ||
|  |     def test_remove_songs_are_not_generated(self) -> None: | ||
|  |         collection = MuseDashCollections() | ||
|  |         songs = collection.get_songs_with_settings(True, False, 0, 11) | ||
|  | 
 | ||
|  |         for song_name in self.REMOVED_SONGS: | ||
|  |             self.assertNotIn(song_name, songs, f"Song '{song_name}' wasn't removed correctly.") |