public void SPS_Parses_ItemLevelSpecific() { // Arrange // back=,id=178301,enchant_id=6204,bonus_id=6788/1487/6646 var sixteenthItem = new SimcParsedItem() { Slot = "off_hand", ItemId = 178478, BonusIds = new List <int>() { 7150, 1507, 6646 }, Equipped = true, ItemLevel = 190 }; // Act var expectedItem = JsonConvert.SerializeObject(sixteenthItem); var actualItem = JsonConvert.SerializeObject(ParsedProfile.Items[15]); // Assert Assert.IsNotNull(ParsedProfile); Assert.IsNotNull(ParsedProfile.Items); Assert.NotZero(ParsedProfile.Items.Count); Assert.AreEqual(expectedItem, actualItem); }
public async Task ICS_Builds_Trinket_From_ParsedItem_Secondary_Stat_UseEffect() { // Arrange // Flame of Battle (226) // trinket1=,id=181501,bonus_id=6652/7215,drop_level=50 // 226 ilvl. 77 int, 1211 vers proc for 6s (90s cd) var parsedData = new SimcParsedItem() { ItemId = 181501, BonusIds = new ReadOnlyCollection <int>(new List <int>() { 6652, 7215 }), DropLevel = 50 }; // Act var item = await _ics.CreateItemAsync(parsedData); // Assert Assert.IsNotNull(item); Assert.IsNotNull(item.Effects); Assert.AreEqual(2, item.Effects.Count); Assert.AreEqual(126201, item.Effects[0].EffectId); Assert.IsNotNull(item.Effects[0].Spell); Assert.AreEqual(336841, item.Effects[0].Spell.SpellId); Assert.AreEqual(90000, item.Effects[0].Spell.Cooldown); Assert.AreEqual(12000.0d, item.Effects[0].Spell.Duration); Assert.AreEqual(1.3098933696746826, item.Effects[0].Spell.CombatRatingMultiplier); Assert.AreEqual(64.930999760000006d, item.Effects[0].Spell.Effects[0].ScaleBudget); Assert.IsNotNull(item.Effects[0].Spell.Effects); Assert.AreEqual(1, item.Effects[0].Spell.Effects.Count); Assert.AreEqual(2.955178d, item.Effects[1].Spell.Effects[0].Coefficient); }
public void SPS_Parses_Items() { // Arrange // back=,id=178301,enchant_id=6204,bonus_id=6788/1487/6646 var fourthItem = new SimcParsedItem() { Slot = "back", ItemId = 178301, EnchantId = 6204, BonusIds = new List <int>() { 6788, 1487, 6646 }, Equipped = true }; // Act var expectedItem = JsonConvert.SerializeObject(fourthItem); var actualItem = JsonConvert.SerializeObject(ParsedProfile.Items[3]); // Assert Assert.IsNotNull(ParsedProfile); Assert.IsNotNull(ParsedProfile.Items); Assert.NotZero(ParsedProfile.Items.Count); Assert.AreEqual(expectedItem, actualItem); }
async Task <SimcItem> ISimcItemCreationService.CreateItemAsync(SimcParsedItem parsedItemData) { var item = await BuildItemAsync(parsedItemData.ItemId); if (item == null) { throw new ArgumentOutOfRangeException( nameof(parsedItemData.ItemId), $"ItemId not found: {parsedItemData.ItemId}"); } // Force item level if provided with ilevel= if (parsedItemData.ItemLevel > 0) { AddItemLevel(item, parsedItemData.ItemLevel - item.ItemLevel); item.ItemLevelForced = true; } await UpdateItemAsync(item, parsedItemData.BonusIds.ToList(), parsedItemData.GemIds.ToList(), parsedItemData.DropLevel); await UpdateItemEffects(item); return(item); }
public async Task ICS_Builds_Trinket_From_ParsedItem_HealDmg_UseEffect() { // Arrange // Brimming Ember Shard (226) // trinket1=,id=175733,bonus_id=6706/7215,drop_level=50 // 226 ilvl. 100 vers, 14866 health over 6s split between allies // 12001 damage over 6s split between enemies // 40yd beam, 90s cd. var parsedData = new SimcParsedItem() { ItemId = 175733, BonusIds = new ReadOnlyCollection <int>(new List <int>() { 6706, 7215 }), DropLevel = 50 }; // Act var item = await _ics.CreateItemAsync(parsedData); // Assert Assert.IsNotNull(item); Assert.IsNotNull(item.Effects); Assert.AreEqual(2, item.Effects.Count); // First effect Assert.AreEqual(126207, item.Effects[0].EffectId); Assert.IsNotNull(item.Effects[0].Spell); Assert.AreEqual(336866, item.Effects[0].Spell.SpellId); Assert.AreEqual(90000, item.Effects[0].Spell.Cooldown); Assert.AreEqual(6000, item.Effects[0].Spell.Duration); Assert.AreEqual(1.3098933696746826, item.Effects[0].Spell.CombatRatingMultiplier); Assert.AreEqual(64.930999760000006d, item.Effects[0].Spell.Effects[0].ScaleBudget); // Second effect Assert.AreEqual(135863, item.Effects[1].EffectId); Assert.IsNotNull(item.Effects[1].Spell); Assert.AreEqual(343538, item.Effects[1].Spell.SpellId); Assert.AreEqual(1.3098933696746826, item.Effects[1].Spell.CombatRatingMultiplier); Assert.AreEqual(41.071998600000001d, item.Effects[1].Spell.Effects[0].ScaleBudget); Assert.IsNotNull(item.Effects[1].Spell.Effects); Assert.AreEqual(2, item.Effects[1].Spell.Effects.Count); // Second effect's spells first effect Assert.AreEqual(460.97500600000001d, item.Effects[1].Spell.Effects[0].Coefficient); Assert.AreEqual(621.39996299999996d, item.Effects[1].Spell.Effects[1].Coefficient); }
public void ICS_ParsedData_Invalid_ItemId_Throws() { // Arrange // Glowing Endmire Stinger (226) // trinket1=,id=179927,bonus_id=6652/7215,drop_level=50 var parsedData = new SimcParsedItem() { ItemId = 12333333, BonusIds = new ReadOnlyCollection <int>(new List <int>() { 6706, 7215 }), DropLevel = 50 }; // Act // Assert Assert.ThrowsAsync <ArgumentOutOfRangeException>( async() => await _ics.CreateItemAsync(parsedData)); }
public async Task ICS_Ilevel_Forces_Item_Level() { // Arrange var itemOptions = new SimcParsedItem() { Slot = "off_hand", ItemId = 178478, BonusIds = new List <int>() { 7150, 1507, 6646 }, Equipped = true, ItemLevel = 138 }; // Act var item = await _ics.CreateItemAsync(itemOptions); // Assert Assert.IsNotNull(item); Assert.AreEqual(178478, item.ItemId); Assert.AreEqual(138, item.ItemLevel); }
public async Task ICS_Builds_Trinket_From_ParsedItem_Primary_ProcEffectt() { // Arrange // Misfiring Centurion Controller (226) // trinket1=,id=173349,bonus_id=6706/7215,drop_level=50 // 226 ilvl. 100 crit, 164 int for 15s proc var parsedData = new SimcParsedItem() { ItemId = 173349, BonusIds = new ReadOnlyCollection <int>(new List <int>() { 6706, 7215 }), DropLevel = 50 }; // Act var item = await _ics.CreateItemAsync(parsedData); // Assert Assert.IsNotNull(item); Assert.IsNotNull(item.Effects); Assert.AreEqual(1, item.Effects.Count); Assert.AreEqual(226, item.ItemLevel); // First effect Assert.AreEqual(135894, item.Effects[0].EffectId); Assert.IsNotNull(item.Effects[0].Spell); Assert.AreEqual(344117, item.Effects[0].Spell.SpellId); Assert.AreEqual(1.5, item.Effects[0].Spell.Rppm); Assert.AreEqual(1.3098933696746826, item.Effects[0].Spell.CombatRatingMultiplier); Assert.AreEqual(64.930999760000006d, item.Effects[0].Spell.Effects[0].ScaleBudget); // First effect's spells first effect trigger spells first effect (lol) // This is basically testing that the trigger spell gets linked. This particular spell // stores the proc coefficient in the trigger spell and multiplies it by 155. // amusingly the previous lines have "trigger spell" lined up vertically. Assert.AreEqual(1.406452, item.Effects[0].Spell.Effects[0].TriggerSpell.Effects[0].Coefficient); }