Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }