def test_solo_create_pickup_data(pickup_for_create_pickup_data): # Setup creator = patcher_file.PickupCreatorSolo(MagicMock(), patcher_file._SimplifiedMemo()) # Run data = creator.create_pickup_data( PickupIndex(10), PickupTarget(pickup_for_create_pickup_data, 0), pickup_for_create_pickup_data, PickupModelStyle.ALL_VISIBLE, "Scan Text") # Assert assert data == { 'conditional_resources': [{ 'item': 1, 'resources': [{ 'amount': 1, 'index': 2 }] }], 'convert': [], 'hud_text': ['Sugar acquired!', 'Salt acquired!'], 'resources': [{ 'amount': 1, 'index': 1 }], 'scan': 'Scan Text', }
def test_create_pickup_all_from_pool(echoes_resource_database, default_layout_configuration, disable_hud_popup: bool): item_pool = pool_creator.calculate_pool_results( default_layout_configuration, echoes_resource_database) index = PickupIndex(0) if disable_hud_popup: memo_data = patcher_file._SimplifiedMemo() else: memo_data = default_prime2_memo_data() creator = patcher_file.PickupCreatorSolo(MagicMock(), memo_data) for item in item_pool.pickups: creator.create_pickup(index, PickupTarget(item, 0), item, PickupModelStyle.ALL_VISIBLE)
def test_run_validated_hud_text(): # Setup rng = MagicMock() rng.randint.return_value = 0 creator = patcher_file.PickupCreatorSolo(rng, patcher_file._SimplifiedMemo()) resource_a = SimpleResourceInfo(1, "A", "A", ResourceType.ITEM) pickup = PickupEntry("Energy Transfer Module", 1, ItemCategory.TEMPLE_KEY, ItemCategory.KEY, ( ConditionalResources("Energy Transfer Module", None, ((resource_a, 1),)), )) # Run data = creator.create_pickup_data(PickupIndex(0), PickupTarget(pickup, 0), pickup, PickupModelStyle.ALL_VISIBLE, "Scan Text") # Assert assert data['hud_text'] == ['Run validated!']
def test_create_pickup_list_random_data_source(has_memo_data: bool, empty_patches): # Setup rng = Random(5000) resources = (ConditionalResources(None, None, tuple()), ) resource_b = ItemResourceInfo(2, "B", "B", 10, None) pickup_a = PickupEntry("A", 1, ItemCategory.TEMPLE_KEY, ItemCategory.KEY, resources) pickup_b = PickupEntry("B", 2, ItemCategory.SUIT, ItemCategory.LIFE_SUPPORT, ( ConditionalResources(None, None, tuple()), ConditionalResources(None, resource_b, tuple()), )) pickup_c = PickupEntry("C", 2, ItemCategory.EXPANSION, ItemCategory.MISSILE_RELATED, resources) useless_pickup = PickupEntry("Useless", 0, ItemCategory.ETM, ItemCategory.ETM, resources) patches = empty_patches.assign_pickup_assignment({ PickupIndex(0): PickupTarget(pickup_a, 0), PickupIndex(2): PickupTarget(pickup_b, 0), PickupIndex(3): PickupTarget(pickup_a, 0), PickupIndex(4): PickupTarget(pickup_c, 0), }) if has_memo_data: memo_data = { "A": "This is an awesome item A", "B": "This is B. It is good.", "C": "What a nice day to have a C", "Useless": "Try again next time", } else: memo_data = { name: "{} acquired!".format(name) for name in ("A", "B", "C", "Useless") } creator = patcher_file.PickupCreatorSolo(MagicMock(), memo_data) # Run result = patcher_file._create_pickup_list( patches, PickupTarget(useless_pickup, 0), 5, rng, PickupModelStyle.HIDE_ALL, PickupModelDataSource.RANDOM, creator, ) # Assert # Assert assert len(result) == 5 assert result[0] == { "pickup_index": 0, "model_index": 1, "scan": "A", "hud_text": [memo_data["A"]], "sound_index": 1, "jingle_index": 2, "resources": [], "conditional_resources": [], "convert": [], } assert result[1] == { "pickup_index": 1, "scan": "A", "model_index": 1, "hud_text": [memo_data["A"]], "sound_index": 1, "jingle_index": 2, "resources": [], "conditional_resources": [], "convert": [], } assert result[2] == { "pickup_index": 2, "scan": "C", "model_index": 2, "hud_text": [memo_data["C"], memo_data["C"]], "sound_index": 0, "jingle_index": 0, "resources": [], "conditional_resources": [{ 'item': 2, 'resources': [] }], "convert": [], } assert result[3] == { "pickup_index": 3, "scan": "B", "model_index": 2, "hud_text": [memo_data["B"]], "sound_index": 0, "jingle_index": 1, "resources": [], "conditional_resources": [], "convert": [], } assert result[4] == { "pickup_index": 4, "scan": "A", "model_index": 1, "hud_text": [memo_data["A"]], "sound_index": 1, "jingle_index": 2, "resources": [], "conditional_resources": [], "convert": [], }
def test_create_pickup_list(model_style: PickupModelStyle, empty_patches): # Setup has_scan_text = model_style in { PickupModelStyle.ALL_VISIBLE, PickupModelStyle.HIDE_MODEL } rng = Random(5000) useless_resource = ItemResourceInfo(0, "Useless", "Useless", 10, None) resource_a = ItemResourceInfo(1, "A", "A", 10, None) resource_b = ItemResourceInfo(2, "B", "B", 10, None) pickup_a = PickupEntry("A", 1, ItemCategory.TEMPLE_KEY, ItemCategory.KEY, (ConditionalResources(None, None, ((resource_a, 1), )), )) pickup_b = PickupEntry("B", 2, ItemCategory.SUIT, ItemCategory.LIFE_SUPPORT, (ConditionalResources(None, None, ((resource_b, 1), (resource_a, 1))), ConditionalResources(None, resource_b, ((resource_a, 5), )))) pickup_c = PickupEntry( "C", 2, ItemCategory.EXPANSION, ItemCategory.MISSILE_RELATED, resources=(ConditionalResources(None, None, ((resource_b, 2), (resource_a, 1))), ), convert_resources=(ResourceConversion(useless_resource, resource_a), )) useless_pickup = PickupEntry( "Useless", 0, ItemCategory.ETM, ItemCategory.ETM, (ConditionalResources(None, None, ((useless_resource, 1), )), )) patches = empty_patches.assign_pickup_assignment({ PickupIndex(0): PickupTarget(pickup_a, 0), PickupIndex(2): PickupTarget(pickup_b, 0), PickupIndex(3): PickupTarget(pickup_a, 0), PickupIndex(4): PickupTarget(pickup_c, 0), }) creator = patcher_file.PickupCreatorSolo(MagicMock(), patcher_file._SimplifiedMemo()) # Run result = patcher_file._create_pickup_list( patches, PickupTarget(useless_pickup, 0), 5, rng, model_style, PickupModelDataSource.ETM, creator, ) # Assert assert len(result) == 5 assert result[0] == { "pickup_index": 0, "model_index": 1 if model_style == PickupModelStyle.ALL_VISIBLE else 30, "scan": "A" if has_scan_text else "Unknown item", "hud_text": ["A acquired!"] if model_style != PickupModelStyle.HIDE_ALL else ['Unknown item acquired!'], "sound_index": 1 if model_style == PickupModelStyle.ALL_VISIBLE else 0, "jingle_index": 2 if model_style == PickupModelStyle.ALL_VISIBLE else 0, "resources": [{ "index": 1, "amount": 1 }], "conditional_resources": [], "convert": [], } assert result[1] == { "pickup_index": 1, "scan": "Useless" if has_scan_text else "Unknown item", "model_index": 0 if model_style == PickupModelStyle.ALL_VISIBLE else 30, "hud_text": ["Useless acquired!"] if model_style != PickupModelStyle.HIDE_ALL else ['Unknown item acquired!'], "sound_index": 0, "jingle_index": 0, "resources": [{ "index": 0, "amount": 1 }], "conditional_resources": [], "convert": [], } assert result[2] == { "pickup_index": 2, "scan": "B" if has_scan_text else "Unknown item", "model_index": 2 if model_style == PickupModelStyle.ALL_VISIBLE else 30, "hud_text": ["B acquired!", "B acquired!"] if model_style != PickupModelStyle.HIDE_ALL else ['Unknown item acquired!', 'Unknown item acquired!'], "sound_index": 0, "jingle_index": 1 if model_style == PickupModelStyle.ALL_VISIBLE else 0, "resources": [{ "index": 2, "amount": 1 }, { "index": 1, "amount": 1 }], "conditional_resources": [{ "item": 2, "resources": [{ "index": 1, "amount": 5 }] }], "convert": [], } assert result[3] == { "pickup_index": 3, "scan": "A" if has_scan_text else "Unknown item", "model_index": 1 if model_style == PickupModelStyle.ALL_VISIBLE else 30, "hud_text": ["A acquired!"] if model_style != PickupModelStyle.HIDE_ALL else ['Unknown item acquired!'], "sound_index": 1 if model_style == PickupModelStyle.ALL_VISIBLE else 0, "jingle_index": 2 if model_style == PickupModelStyle.ALL_VISIBLE else 0, "resources": [{ "index": 1, "amount": 1 }], "conditional_resources": [], "convert": [], } assert result[4] == { "pickup_index": 4, "scan": "C that provides 2 B and 1 A" if has_scan_text else "Unknown item", "model_index": 2 if model_style == PickupModelStyle.ALL_VISIBLE else 30, "hud_text": ["C acquired!"] if model_style != PickupModelStyle.HIDE_ALL else ['Unknown item acquired!'], "sound_index": 0, "jingle_index": 0, "resources": [{ "index": 2, "amount": 2 }, { "index": 1, "amount": 1 }], "conditional_resources": [], "convert": [{ "from_item": 0, "to_item": 1, "clear_source": True, "overwrite_target": False, }], }