mirror of
https://github.com/gwdevhub/Daybreak.git
synced 2026-07-25 08:22:07 +00:00
Co-authored-by: Alexandru Macocian <amacocian@microsoft.com>
71 lines
1.9 KiB
C#
71 lines
1.9 KiB
C#
using System.Text;
|
|
using Daybreak.Shared.Models.Guildwars;
|
|
using FluentAssertions;
|
|
|
|
namespace Daybreak.Tests.Models;
|
|
|
|
[TestClass]
|
|
public sealed class ItemBaseTests
|
|
{
|
|
[TestMethod]
|
|
public void TryParse_UnknownId_Fails()
|
|
{
|
|
var found = ItemBase.TryParse(int.MaxValue, modifiers: default, out var item);
|
|
found.Should().BeFalse();
|
|
item.Should().BeNull();
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Parse_UnknownId_ThrowsInvalidOperationException()
|
|
{
|
|
var action = () => ItemBase.Parse(int.MaxValue, modifiers: default);
|
|
action.Should().Throw<InvalidOperationException>();
|
|
}
|
|
|
|
[TestMethod]
|
|
public void TryParse_KnownId_Succeeds()
|
|
{
|
|
var found = ItemBase.TryParse(Inscription.WeaponInscription.Id, Inscription.WeaponInscription.Modifiers, out var inscription);
|
|
found.Should().BeTrue();
|
|
inscription.Should().Be(Inscription.WeaponInscription);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Parse_KnownId_ReturnsExpected()
|
|
{
|
|
var inscription = ItemBase.Parse(Inscription.WeaponInscription.Id, Inscription.WeaponInscription.Modifiers);
|
|
inscription.Should().Be(Inscription.WeaponInscription);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ItemList_Should_ContainOnlyUniqueItems()
|
|
{
|
|
var itemMap = new Dictionary<ItemBase, int>();
|
|
|
|
foreach (var item in ItemBase.AllItems)
|
|
{
|
|
if (!itemMap.TryGetValue(item, out _))
|
|
{
|
|
itemMap[item] = 0;
|
|
}
|
|
|
|
itemMap[item] += 1;
|
|
}
|
|
|
|
var errorMessage = new StringBuilder("Duplicated item entries: ");
|
|
foreach (var tuple in itemMap)
|
|
{
|
|
if (tuple.Value > 1)
|
|
{
|
|
errorMessage.Append(tuple.Key.Name);
|
|
errorMessage.Append(", ");
|
|
}
|
|
}
|
|
|
|
if (itemMap.Any(kvp => kvp.Value > 1))
|
|
{
|
|
Assert.Fail(errorMessage.ToString());
|
|
}
|
|
}
|
|
}
|