baseline: OpenMU upstream b5a0961 (fresh source)
This commit is contained in:
107
tests/MUnique.OpenMU.Tests/SkillListTest.cs
Normal file
107
tests/MUnique.OpenMU.Tests/SkillListTest.cs
Normal file
@@ -0,0 +1,107 @@
|
||||
// <copyright file="SkillListTest.cs" company="MUnique">
|
||||
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
|
||||
// </copyright>
|
||||
|
||||
namespace MUnique.OpenMU.Tests;
|
||||
|
||||
using Moq;
|
||||
using MUnique.OpenMU.DataModel.Configuration;
|
||||
using MUnique.OpenMU.DataModel.Configuration.Items;
|
||||
using MUnique.OpenMU.DataModel.Entities;
|
||||
using MUnique.OpenMU.GameLogic;
|
||||
|
||||
/// <summary>
|
||||
/// Tests the skill list.
|
||||
/// </summary>
|
||||
[TestFixture]
|
||||
public class SkillListTest
|
||||
{
|
||||
private const ushort LearnedSkillId = 10;
|
||||
private const ushort NonLearnedSkillId = 999;
|
||||
private const ushort QualifiedItemSkillId = 1;
|
||||
private const ushort NonQualifiedItemSkillId = 9;
|
||||
|
||||
/// <summary>
|
||||
/// Tests if the created skill list contains a skill that was learned by the character before.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async ValueTask LearnedSkillAsync()
|
||||
{
|
||||
var player = await PlayerTestHelper.CreatePlayerAsync().ConfigureAwait(false);
|
||||
player.SelectedCharacter!.LearnedSkills.Add(this.CreateSkillEntry(LearnedSkillId));
|
||||
var skillList = new SkillList(player);
|
||||
Assert.That(skillList.ContainsSkill(LearnedSkillId), Is.True);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests if the skill of an item is or isn't getting added to the skill list, depending if it's suitable to the character's class.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async ValueTask ItemSkillAddedAsync()
|
||||
{
|
||||
var player = await PlayerTestHelper.CreatePlayerAsync().ConfigureAwait(false);
|
||||
var skillList = player.SkillList as SkillList;
|
||||
await player.Inventory!.AddItemAsync(0, this.CreateItemWithSkill(QualifiedItemSkillId, player.SelectedCharacter!.CharacterClass)).ConfigureAwait(false);
|
||||
await player.Inventory!.AddItemAsync(1, this.CreateItemWithSkill(NonQualifiedItemSkillId)).ConfigureAwait(false);
|
||||
|
||||
Assert.That(skillList!.ContainsSkill(QualifiedItemSkillId), Is.True);
|
||||
Assert.That(skillList!.ContainsSkill(NonQualifiedItemSkillId), Is.False);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the removal of item skills.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async ValueTask ItemSkillRemovedAsync()
|
||||
{
|
||||
var player = await PlayerTestHelper.CreatePlayerAsync().ConfigureAwait(false);
|
||||
var item = this.CreateItemWithSkill(QualifiedItemSkillId, player.SelectedCharacter!.CharacterClass);
|
||||
item.Durability = 1;
|
||||
await player.Inventory!.AddItemAsync(0, item).ConfigureAwait(false);
|
||||
var skillList = new SkillList(player);
|
||||
Assert.That(await skillList.RemoveItemSkillAsync(item.Definition!.Skill!.Number.ToUnsigned()).ConfigureAwait(false), Is.True);
|
||||
Assert.That(skillList.ContainsSkill(QualifiedItemSkillId), Is.False);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests if the skill list does not contain non-learned skills.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async ValueTask NonLearnedSkillAsync()
|
||||
{
|
||||
var player = await PlayerTestHelper.CreatePlayerAsync().ConfigureAwait(false);
|
||||
Assert.That(player.SkillList!.ContainsSkill(NonLearnedSkillId), Is.False);
|
||||
}
|
||||
|
||||
private Item CreateItemWithSkill(ushort skillId, CharacterClass? qualifiedClass = null)
|
||||
{
|
||||
var itemDefinition = new Mock<ItemDefinition>();
|
||||
itemDefinition.SetupAllProperties();
|
||||
|
||||
var skillDefinition = new Mock<Skill>();
|
||||
skillDefinition.Object.Number = skillId.ToSigned();
|
||||
skillDefinition.Setup(sd => sd.QualifiedCharacters).Returns(new List<CharacterClass>());
|
||||
if (qualifiedClass is not null)
|
||||
{
|
||||
skillDefinition.Object.QualifiedCharacters.Add(qualifiedClass);
|
||||
}
|
||||
|
||||
itemDefinition.Object.Skill = skillDefinition.Object;
|
||||
itemDefinition.Object.Height = 1;
|
||||
itemDefinition.Object.Width = 1;
|
||||
itemDefinition.Setup(d => d.BasePowerUpAttributes).Returns(new List<ItemBasePowerUpDefinition>());
|
||||
|
||||
var item = new Item
|
||||
{
|
||||
HasSkill = true,
|
||||
Definition = itemDefinition.Object,
|
||||
};
|
||||
return item;
|
||||
}
|
||||
|
||||
private SkillEntry CreateSkillEntry(ushort skillId)
|
||||
{
|
||||
var skillEntry = new SkillEntry { Skill = new OpenMU.DataModel.Configuration.Skill { Number = skillId.ToSigned() } };
|
||||
return skillEntry;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user