From bf7cfca9d9030b34935c3cf057b5065d8fbc3bec Mon Sep 17 00:00:00 2001 From: Jonathan Eritzian Date: Fri, 12 Sep 2025 20:10:10 +0200 Subject: [PATCH 1/2] Add test coverage in the CI --- .github/workflows/buildAndTest.yml | 42 ++++- .gitignore | 1 + README.md | 54 +++++- .../Enemies/EnemyTypeHelperTests.cs | 168 ++++++++++++++++++ .../Roguelike.Core.Tests.csproj | 7 + .../Game/Characters/Enemies/EnemyManager.cs | 1 - .../Game/Characters/Enemies/EnemyType.cs | 7 +- .../Characters/Enemies/EnemyTypeHelper.cs | 7 +- .../Game/Collectables/TreasureSelector.cs | 2 +- .../{Extensions => Utils}/RandomExtension.cs | 7 +- Screenshots/combat.png | Bin 0 -> 69723 bytes Screenshots/dialogue.png | Bin 0 -> 36704 bytes Screenshots/exploring.png | Bin 0 -> 83643 bytes 13 files changed, 285 insertions(+), 11 deletions(-) create mode 100644 Roguelike.Core.Tests/Game/Characters/Enemies/EnemyTypeHelperTests.cs rename Roguelike.Core/{Extensions => Utils}/RandomExtension.cs (82%) create mode 100644 Screenshots/combat.png create mode 100644 Screenshots/dialogue.png create mode 100644 Screenshots/exploring.png diff --git a/.github/workflows/buildAndTest.yml b/.github/workflows/buildAndTest.yml index 6121cce..2a8965a 100644 --- a/.github/workflows/buildAndTest.yml +++ b/.github/workflows/buildAndTest.yml @@ -6,7 +6,7 @@ on: pull_request: branches: [ "main" ] jobs: - build: + buildAndTest: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -18,5 +18,41 @@ jobs: run: dotnet restore - name: Build run: dotnet build --no-restore - - name: Test - run: dotnet test --no-build --verbosity normal + - name: Test (with Coverage) + # Collect coverage using the built-in data collector (coverlet.collector must be referenced by each test project) + run: dotnet test --no-build --verbosity normal --collect:"XPlat Code Coverage" + # Install ReportGenerator to turn Cobertura XML into HTML + text summary + - name: Install ReportGenerator tool + run: | + dotnet tool install --global dotnet-reportgenerator-globaltool + echo "$HOME/.dotnet/tools" >> $GITHUB_PATH + # Generate HTML and Text summary reports + - name: Generate coverage report + run: | + reportgenerator \ + -reports:"**/TestResults/**/coverage.cobertura.xml" \ + -targetdir:"coveragereport" \ + -reporttypes:"Html;TextSummary" + + # Print the summary to the job log + - name: Print coverage summary + run: cat coveragereport/Summary.txt + + # Always upload the nice HTML report for inspection (even if threshold fails) + - name: Upload coverage report artifact + if: always() + uses: actions/upload-artifact@v4 + with: + name: coveragereport + path: coveragereport + + # Fail the build if Line coverage < 50% + - name: Enforce minimum coverage (50% lines) + run: | + LINE_COV=$(grep -Po 'Line coverage:\s*\K[0-9.]+(?=%)' coveragereport/Summary.txt || echo 0) + echo "Detected line coverage: ${LINE_COV}%" + THRESHOLD=50 + awk -v a="$LINE_COV" -v b="$THRESHOLD" 'BEGIN { + printf("Minimum required: %s%%\n", b); + exit (a>=b)?0:1 + }' diff --git a/.gitignore b/.gitignore index ce89292..b4efcd1 100644 --- a/.gitignore +++ b/.gitignore @@ -416,3 +416,4 @@ FodyWeavers.xsd *.msix *.msm *.msp +/Roguelike.Core.Tests/coveragereport diff --git a/README.md b/README.md index ef934cd..a25d708 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,54 @@ # oneheim -A detailled roguelike in console + +A detailled roguelike in console. + +Explore the region : + +![image](screenshots/exploring.png) + +Discuss with NPCs : + +![image](screenshots/dialogue.png) + +Fights various enemies : + +![image](screenshots/combat.png) + +## How to run unit tests and show code coverage + +### 1. Run tests and collect data + +```powershell +cd Roguelike.Core.Tests +dotnet test --collect:"XPlat Code Coverage" +``` + +Coverage results will be saved under: `TestResults//coverage.cobertura.xml` + +### 2. Use ReportGenerator to create an HTML report + +```powershell +reportgenerator -reports:TestResults/**/coverage.cobertura.xml -targetdir:coveragereport +``` + +### 3. Open the report in your browser + +The report will be generated in `coveragereport/index.html` + +#### Windows + +```powershell +start coveragereport/index.html +``` + +#### macOS + +```bash +open coveragereport/index.html +``` + +#### Linux + +```bash +xdg-open coveragereport/index.html +``` diff --git a/Roguelike.Core.Tests/Game/Characters/Enemies/EnemyTypeHelperTests.cs b/Roguelike.Core.Tests/Game/Characters/Enemies/EnemyTypeHelperTests.cs new file mode 100644 index 0000000..ca90363 --- /dev/null +++ b/Roguelike.Core.Tests/Game/Characters/Enemies/EnemyTypeHelperTests.cs @@ -0,0 +1,168 @@ +using Roguelike.Core.Game.Characters.Enemies; + +namespace Roguelike.Core.Tests.Game.Characters.Enemies; + +[TestClass] +public class EnemyTypeHelperTests +{ + [TestMethod] + public void GetRandomEnemyTypesBag_InvalidSize_Throws() + { + int enumCount = Enum.GetNames().Length; + + Assert.ThrowsException(() => + EnemyTypeHelper.GetRandomEnemyTypesBag(-1)); + + Assert.ThrowsException(() => + EnemyTypeHelper.GetRandomEnemyTypesBag(0)); + + Assert.ThrowsException(() => + EnemyTypeHelper.GetRandomEnemyTypesBag(enumCount)); + + Assert.ThrowsException(() => + EnemyTypeHelper.GetRandomEnemyTypesBag(enumCount + 1)); + } + + [TestMethod] + public void GetRandomEnemyTypesBag_ValidSize_ReturnsThatManyDistinctValidTypes() + { + int enumCount = Enum.GetNames().Length; + // valid size is any 1..(enumCount-1) + int size = Math.Max(1, enumCount - 2); + + var result = EnemyTypeHelper.GetRandomEnemyTypesBag(size); + + Assert.IsNotNull(result); + Assert.AreEqual(size, result.Count, "Returned bag does not match requested size."); + + // With current implementation, previously-picked types are excluded, + // so all items should be distinct. + Assert.AreEqual(size, result.Distinct().Count(), "Bag should not contain duplicates with current exclusion logic."); + + // All must be known/valid types present in the weights dictionary (and not Unknown). + var validTypes = EnemyTypeHelper.Weights.Keys.ToHashSet(); + foreach (var t in result) + { + Assert.AreNotEqual(EnemyType.Unknown, t, "Bag must not contain EnemyType.Unknown."); + Assert.IsTrue(validTypes.Contains(t), $"Bag contains an invalid EnemyType: {t}"); + } + } + + [TestMethod] + public void GetRandomEnemyTypesBag_NoImmediateDuplicates_AndNoUnknown() + { + int enumCount = Enum.GetNames().Length; + int size = Math.Max(2, enumCount - 1); // take the max valid size to stress the path + + var bag = EnemyTypeHelper.GetRandomEnemyTypesBag(size); + + // No immediate duplicates + for (int i = 1; i < bag.Count; i++) + { + Assert.AreNotEqual(bag[i - 1], bag[i], $"Immediate duplicate at indices {i - 1} and {i}"); + } + + // No Unknown + Assert.IsFalse(bag.Contains(EnemyType.Unknown), "Bag must not contain EnemyType.Unknown."); + } + + [TestMethod] + public void GetEnemyIdsByType_ReturnsExpectedLists() + { + // Undead + var undead = EnemyTypeHelper.GetEnemyIdsByType(EnemyType.Undead); + CollectionAssert.AreEquivalent( + new List + { + EnemyId.LeglessZombie, + EnemyId.Skeleton, + EnemyId.Zombie, + EnemyId.ArmoredZombie, + EnemyId.PlagueGhoul, + EnemyId.Revenant + }, + undead, + "Undead enemy IDs mismatch." + ); + + // Wild + var wild = EnemyTypeHelper.GetEnemyIdsByType(EnemyType.Wild); + CollectionAssert.AreEquivalent( + new List + { + EnemyId.WildLittleBear, + EnemyId.WildBear, + EnemyId.Wolf, + EnemyId.AlphaWolf, + EnemyId.GiantSpider, + EnemyId.Werewolf + }, + wild, + "Wild enemy IDs mismatch." + ); + + // Outlaws + var outlaws = EnemyTypeHelper.GetEnemyIdsByType(EnemyType.Outlaws); + CollectionAssert.AreEquivalent( + new List + { + EnemyId.Drunkard, + EnemyId.Pickpocket, + EnemyId.Brigand, + EnemyId.Mercenary, + EnemyId.WatchtowerArcher, + EnemyId.Assassin + }, + outlaws, + "Outlaws enemy IDs mismatch." + ); + + // Cultist + var cultist = EnemyTypeHelper.GetEnemyIdsByType(EnemyType.Cultist); + CollectionAssert.AreEquivalent( + new List + { + EnemyId.Novice, + EnemyId.Acolyte, + EnemyId.Cultist, + EnemyId.Zealot, + EnemyId.Priest, + EnemyId.Champion + }, + cultist, + "Cultist enemy IDs mismatch." + ); + + // Demon + var demon = EnemyTypeHelper.GetEnemyIdsByType(EnemyType.Demon); + CollectionAssert.AreEquivalent( + new List + { + EnemyId.Imp, + EnemyId.DemonSlave, + EnemyId.Hellhound, + EnemyId.Overseer, + EnemyId.HellObelisk, + EnemyId.DoomReaper + }, + demon, + "Demon enemy IDs mismatch." + ); + + // Default / unknown + var none = EnemyTypeHelper.GetEnemyIdsByType((EnemyType)999); + Assert.IsNotNull(none); + Assert.AreEqual(0, none.Count, "Unknown enemy type should return an empty list."); + } + + [TestMethod] + public void Weights_Definition_IsConsistent() + { + // Ensure that all weighted types are valid enum values (not Unknown) and weights are positive. + foreach (var kv in EnemyTypeHelper.Weights) + { + Assert.AreNotEqual(EnemyType.Unknown, kv.Key, "Weights should not include Unknown."); + Assert.IsTrue(kv.Value > 0, $"Weight for {kv.Key} should be positive."); + } + } +} diff --git a/Roguelike.Core.Tests/Roguelike.Core.Tests.csproj b/Roguelike.Core.Tests/Roguelike.Core.Tests.csproj index 99b5259..046a70d 100644 --- a/Roguelike.Core.Tests/Roguelike.Core.Tests.csproj +++ b/Roguelike.Core.Tests/Roguelike.Core.Tests.csproj @@ -12,4 +12,11 @@ + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + diff --git a/Roguelike.Core/Game/Characters/Enemies/EnemyManager.cs b/Roguelike.Core/Game/Characters/Enemies/EnemyManager.cs index 230ebb0..86ce97f 100644 --- a/Roguelike.Core/Game/Characters/Enemies/EnemyManager.cs +++ b/Roguelike.Core/Game/Characters/Enemies/EnemyManager.cs @@ -1,6 +1,5 @@ using Roguelike.Core.Game.Abstractions; using Roguelike.Core.Game.Characters.Moves; -using Roguelike.Core.Game.Characters.Players; using Roguelike.Core.Game.Collectables.Items; using Roguelike.Core.Game.Combat; using Roguelike.Core.Game.Levels; diff --git a/Roguelike.Core/Game/Characters/Enemies/EnemyType.cs b/Roguelike.Core/Game/Characters/Enemies/EnemyType.cs index f009bf8..abd4576 100644 --- a/Roguelike.Core/Game/Characters/Enemies/EnemyType.cs +++ b/Roguelike.Core/Game/Characters/Enemies/EnemyType.cs @@ -1,8 +1,13 @@ namespace Roguelike.Core.Game.Characters.Enemies; +/// +/// Represents the various types of enemies encountered in the game. +/// +/// This enumeration categorizes enemies into distinct types, which can be used to determine their +/// behavior, strengths, weaknesses, or other gameplay mechanics. public enum EnemyType { - Unknown, + Unknown, // Default value, should not be used in practice. Undead, Wild, Outlaws, diff --git a/Roguelike.Core/Game/Characters/Enemies/EnemyTypeHelper.cs b/Roguelike.Core/Game/Characters/Enemies/EnemyTypeHelper.cs index 85fb8a8..1c8637f 100644 --- a/Roguelike.Core/Game/Characters/Enemies/EnemyTypeHelper.cs +++ b/Roguelike.Core/Game/Characters/Enemies/EnemyTypeHelper.cs @@ -25,8 +25,9 @@ public static class EnemyTypeHelper /// name="size"/> is less than or equal to 0, an empty list is returned. public static List GetRandomEnemyTypesBag(int size) { - if (size <= 0) return new List(); - + if (size <= 0 || size >= Enum.GetNames().Length) + throw new ArgumentOutOfRangeException($"size out of range in GetRandomEnemyTypesBag. Value={size}"); + // On construit une "liste pondérée" avec répétitions virtuelles var weightedList = new List(); foreach (var kv in Weights) @@ -116,6 +117,8 @@ public static List GetEnemyIdsByType(EnemyType type) private static EnemyType GetWeightedRandom(List weightedList, List excluded) { var filtered = weightedList.Where(t => !excluded.Contains(t)).ToList(); + if (filtered.Count == 0) return EnemyType.Unknown; + int index = _random.Next(filtered.Count); return filtered[index]; } diff --git a/Roguelike.Core/Game/Collectables/TreasureSelector.cs b/Roguelike.Core/Game/Collectables/TreasureSelector.cs index c0fcdab..7587fa5 100644 --- a/Roguelike.Core/Game/Collectables/TreasureSelector.cs +++ b/Roguelike.Core/Game/Collectables/TreasureSelector.cs @@ -1,7 +1,7 @@ namespace Roguelike.Core.Game.Collectables; using Roguelike.Core.Configuration; -using Roguelike.Core.Extensions; +using Roguelike.Core.Utils; using Roguelike.Core.Game.Abstractions; using Roguelike.Core.Game.Characters.Players; using Roguelike.Core.Game.Collectables.Items; diff --git a/Roguelike.Core/Extensions/RandomExtension.cs b/Roguelike.Core/Utils/RandomExtension.cs similarity index 82% rename from Roguelike.Core/Extensions/RandomExtension.cs rename to Roguelike.Core/Utils/RandomExtension.cs index 7ca718f..988c6e5 100644 --- a/Roguelike.Core/Extensions/RandomExtension.cs +++ b/Roguelike.Core/Utils/RandomExtension.cs @@ -1,5 +1,8 @@ -namespace Roguelike.Core.Extensions; +namespace Roguelike.Core.Utils; +/// +/// Add extension methods to the Random class. +/// public static class RandomExtensions { public static T NextWeighted(this Random random, Dictionary weights) @@ -18,7 +21,7 @@ public static T NextWeighted(this Random random, Dictionary weights) return kvp.Key; } - // Ne devrait jamais arriver + // Should never reach here throw new InvalidOperationException("Erreur lors du tirage pondéré"); } } diff --git a/Screenshots/combat.png b/Screenshots/combat.png new file mode 100644 index 0000000000000000000000000000000000000000..ffa58491be92a2cb25c69aa4e9127ee70079ccb7 GIT binary patch literal 69723 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

>F$6C~v=?om@GZa3#qiHC;}m|6(m+ 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 literal 0 HcmV?d00001 diff --git a/Screenshots/exploring.png b/Screenshots/exploring.png new file mode 100644 index 0000000000000000000000000000000000000000..add6b99b722338ea8e5ef212de6c9cbca4a17409 GIT binary patch literal 83643 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 literal 0 HcmV?d00001 From 8827d7581fb8141efbc870b1f4253b677dc44fb9 Mon Sep 17 00:00:00 2001 From: Jonathan Eritzian Date: Fri, 12 Sep 2025 20:50:56 +0200 Subject: [PATCH 2/2] Add many unit tests --- Roguelike.Core.Tests/Fakes/FakeInventoryUI.cs | 9 +- .../Fakes/FakeTreasurePicker.cs | 10 +- .../Collectables/Items/ItemFactoryTests.cs | 90 ++++++ .../Collectables/TreasureSelectorTests.cs | 256 ++++++++++++++++++ .../Game/GameLoop/GameEngineTests.cs | 4 +- .../Game/Levels/EnenyBagsTests.cs | 114 ++++++++ .../Systems/Logics/WaveAndFogSystemTests.cs | 4 +- .../Roguelike.Core.Tests.csproj | 9 + 8 files changed, 486 insertions(+), 10 deletions(-) create mode 100644 Roguelike.Core.Tests/Game/Collectables/Items/ItemFactoryTests.cs create mode 100644 Roguelike.Core.Tests/Game/Collectables/TreasureSelectorTests.cs create mode 100644 Roguelike.Core.Tests/Game/Levels/EnenyBagsTests.cs diff --git a/Roguelike.Core.Tests/Fakes/FakeInventoryUI.cs b/Roguelike.Core.Tests/Fakes/FakeInventoryUI.cs index bf0e45b..123ac7f 100644 --- a/Roguelike.Core.Tests/Fakes/FakeInventoryUI.cs +++ b/Roguelike.Core.Tests/Fakes/FakeInventoryUI.cs @@ -7,10 +7,9 @@ namespace Roguelike.Core.Tests.Fakes; public sealed class FakeInventoryUI : IInventoryUI { - public int PromptDropIndex(Player player, Item newItem, GameSettings settings) - { - return 0; - } - public void Show(object player) { } + + private readonly int _dropIndex; + public FakeInventoryUI(int dropIndex) => _dropIndex = dropIndex; + public int PromptDropIndex(Player player, Item newItem, GameSettings settings) => _dropIndex; } diff --git a/Roguelike.Core.Tests/Fakes/FakeTreasurePicker.cs b/Roguelike.Core.Tests/Fakes/FakeTreasurePicker.cs index fde2c83..91dce68 100644 --- a/Roguelike.Core.Tests/Fakes/FakeTreasurePicker.cs +++ b/Roguelike.Core.Tests/Fakes/FakeTreasurePicker.cs @@ -4,8 +4,16 @@ namespace Roguelike.Core.Tests.Fakes; public sealed class FakeTreasurePicker : ITreasurePicker { + private readonly int _toReturn; + public TreasurePickerContext? LastContext { get; private set; } + public IReadOnlyList? LastViews { get; private set; } + + public FakeTreasurePicker(int toReturn) => _toReturn = toReturn; + public int Pick(TreasurePickerContext context, IReadOnlyList options) { - return 0; + LastContext = context; + LastViews = options; + return _toReturn; } } diff --git a/Roguelike.Core.Tests/Game/Collectables/Items/ItemFactoryTests.cs b/Roguelike.Core.Tests/Game/Collectables/Items/ItemFactoryTests.cs new file mode 100644 index 0000000..ac0fcc4 --- /dev/null +++ b/Roguelike.Core.Tests/Game/Collectables/Items/ItemFactoryTests.cs @@ -0,0 +1,90 @@ +using Roguelike.Core.Game.Collectables.Items; + +namespace Roguelike.Core.Tests.Game.Collectables.Items +{ + [TestClass] + public class ItemFactoryTests + { + // Covers every switch arm with simple, data-driven cases. + [DataTestMethod] + [DynamicData(nameof(GetItemCases), DynamicDataSourceType.Method)] + public void CreateItem_KnownIds_ReturnsExpectedBasics(ItemId id, int expectedValue, int expectedInc) + { + // Act + var item = ItemFactory.CreateItem(id); + + // Assert + Assert.IsNotNull(item, "Factory returned null."); + Assert.AreEqual(id, item.Id, "Id should flow through unchanged."); + Assert.AreEqual(expectedValue, item.Value, $"Unexpected Value for {id}."); + Assert.AreEqual(expectedInc, item.UpgradableIncrementValue, $"Unexpected UpgradableIncrementValue for {id}."); + + // Don’t assert the exact localized strings; just ensure they’re present. + Assert.IsFalse(string.IsNullOrWhiteSpace(item.Name), "Name should be populated from i18n Messages."); + Assert.IsFalse(string.IsNullOrWhiteSpace(item.Effect), "Effect should be populated from i18n Messages."); + } + + // Targeted rarity checks for the items that explicitly set Rarity in the factory. + [DataTestMethod] + [DataRow(ItemId.TalismanOfTheLastBreath, ItemRarity.Rare)] + [DataRow(ItemId.HawkEye, ItemRarity.Uncommon)] + [DataRow(ItemId.FidelityCard, ItemRarity.Common)] + public void CreateItem_SpecificRarities_AreSet(ItemId id, ItemRarity expectedRarity) + { + var item = ItemFactory.CreateItem(id); + Assert.AreEqual(expectedRarity, item.Rarity, $"Unexpected rarity for {id}."); + } + + // Ensures the default branch is covered. + [TestMethod] + public void CreateItem_UnknownId_ThrowsArgumentException() + { + var unknown = (ItemId)999_999; + Assert.ThrowsException(() => ItemFactory.CreateItem(unknown)); + } + + // ---- Test data mapping (easy to maintain in one place) ---- + // Only asserts numbers (Value & UpgradableIncrementValue) so tests don't depend on resource text. + public static IEnumerable GetItemCases() + { + yield return Row(ItemId.DaggerLifeSteal, 1, 1); + yield return Row(ItemId.CapeOfInvisibility, 1, 1); + yield return Row(ItemId.GlassesOfClairvoyance, 1, 1); + yield return Row(ItemId.BootsOfEchoStep, 10, 5); + yield return Row(ItemId.TalismanOfTheLastBreath, 1, 0); + yield return Row(ItemId.ThornBreastplate, 1, 1); + yield return Row(ItemId.FeathersOfHope, 1, 1); + yield return Row(ItemId.RoyalGuardGauntlet, 10, 3); + yield return Row(ItemId.RoyalGuardShield, 10, 3); + yield return Row(ItemId.BerserkerNecklace, 30, 15); + yield return Row(ItemId.PaladinNecklace, 50, 10); + yield return Row(ItemId.HolyBible, 20, 10); + yield return Row(ItemId.SacredCrucifix, 20, 10); + yield return Row(ItemId.RingOfEndurance, 1, 1); + yield return Row(ItemId.BladeOfHeroes, 20, 10); + yield return Row(ItemId.ShieldOfChampion, 20, 10); + yield return Row(ItemId.FluteOfHunter, 20, 10); + yield return Row(ItemId.EngravedFangs, 20, 10); + yield return Row(ItemId.EnchantedPouch, 10, 10); + yield return Row(ItemId.SealOfWisdom, 10, 10); + yield return Row(ItemId.ProspectorKey, 4, 2); + yield return Row(ItemId.HawkEye, 40, 20); + yield return Row(ItemId.FidelityCard, 10, 10); + yield return Row(ItemId.TrollMushroom, 125, 25); + yield return Row(ItemId.OldGiantWoodenClub, 3, 1); + yield return Row(ItemId.LuckyMillorLeftHand, 10, 5); + yield return Row(ItemId.GrolMokbarRing, 5, 5); + yield return Row(ItemId.TalismanOfPeace, 4, 4); + yield return Row(ItemId.SealOfLivingFlesh, 2, 2); + yield return Row(ItemId.StopWatch, 15, -1); + yield return Row(ItemId.SauerkrautEffigy, 20, 10); + yield return Row(ItemId.ButchersThornChaplet, 20, 10); + yield return Row(ItemId.NordheimWatcherLantern, 20, 10); + yield return Row(ItemId.ArbalestOfTheKingsValley, 20, 10); + yield return Row(ItemId.LightningAmulet, 20, 10); + yield return Row(ItemId.HolyWater, 20, 10); + } + + private static object[] Row(ItemId id, int value, int inc) => new object[] { id, value, inc }; + } +} diff --git a/Roguelike.Core.Tests/Game/Collectables/TreasureSelectorTests.cs b/Roguelike.Core.Tests/Game/Collectables/TreasureSelectorTests.cs new file mode 100644 index 0000000..1afbd64 --- /dev/null +++ b/Roguelike.Core.Tests/Game/Collectables/TreasureSelectorTests.cs @@ -0,0 +1,256 @@ +using Roguelike.Core.Configuration; +using Roguelike.Core.Game.Characters.Players; +using Roguelike.Core.Game.Collectables; +using Roguelike.Core.Game.Collectables.Items; +using Roguelike.Core.Tests.Fakes; + +namespace Roguelike.Core.Tests.Game.Collectables; + +[TestClass] +public class TreasureSelectorTests +{ + [TestMethod] + public void BuildOptionViews_Item_UsesNextRarityAndFormatsDescription() + { + var baseItem = ItemFactory.CreateItem(ItemId.HolyWater); + var existing = new Item + { + Id = baseItem.Id, + Name = baseItem.Name, + Effect = baseItem.Effect, + Value = baseItem.Value, + UpgradableIncrementValue = baseItem.UpgradableIncrementValue, + Rarity = ItemRarity.Common + }; + + var p = NewPlayer(items: new[] { existing }); + var choices = new[] + { + new Treasure { Type = BonusType.Item, Value = (int)ItemId.HolyWater } + }; + + var views = TreasureSelector.BuildOptionViews(choices, p); + + Assert.AreEqual(1, views.Count); + Assert.AreEqual(BonusType.Item, views[0].Treasure.Type); + // When item already owned & upgradable, rarity shown to user is next step: + Assert.AreEqual(ItemRarity.Uncommon, views[0].Rarity); + // Don’t pin to exact i18n text; just ensure it mentions the item name. + StringAssert.Contains(views[0].Description, baseItem.Name); + } + + [TestMethod] + public void BuildOptionViews_VisionAndStats_MapToExpectedRarities() + { + var p = NewPlayer(maxLife: 200); + + var choices = new[] + { + new Treasure { Type = BonusType.Vision, Value = 1 }, // Common + new Treasure { Type = BonusType.Vision, Value = 2 }, // Uncommon + new Treasure { Type = BonusType.Vision, Value = 3 }, // Rare + new Treasure { Type = BonusType.Strength, Value = 1 }, // Broken + new Treasure { Type = BonusType.Speed, Value = 2 }, // Common + new Treasure { Type = BonusType.Armor, Value = 4 }, // Rare + }; + + var views = TreasureSelector.BuildOptionViews(choices, p); + + Assert.AreEqual(ItemRarity.Common, views[0].Rarity); + Assert.AreEqual(ItemRarity.Uncommon, views[1].Rarity); + Assert.AreEqual(ItemRarity.Rare, views[2].Rarity); + Assert.AreEqual(ItemRarity.Broken, views[3].Rarity); + Assert.AreEqual(ItemRarity.Common, views[4].Rarity); + Assert.AreEqual(ItemRarity.Rare, views[5].Rarity); + } + + [TestMethod] + public void BuildOptionViews_MaxHp_RarityBasedOnRatio() + { + var p = NewPlayer(maxLife: 100); + var choices = new[] + { + new Treasure { Type = BonusType.MaxLifePoint, Value = 4 }, + new Treasure { Type = BonusType.MaxLifePoint, Value = 7 }, + new Treasure { Type = BonusType.MaxLifePoint, Value = 14 }, + new Treasure { Type = BonusType.MaxLifePoint, Value = 17 }, + new Treasure { Type = BonusType.MaxLifePoint, Value = 20 }, + }; + + var views = TreasureSelector.BuildOptionViews(choices, p) + .Select(v => v.Rarity).ToList(); + + CollectionAssert.AreEqual( + new List { + ItemRarity.Broken, ItemRarity.Common, ItemRarity.Uncommon, ItemRarity.Rare, ItemRarity.Epic + }, views); + } + + + [TestMethod] + public void GenerateBonusChoices_AddsDominantStatFocus_AndRespectsFilters() + { + // Dominant Strength (>10 and greater than others) should force a stat focus entry. + var p = NewPlayer(life: 20, maxLife: 100, strength: 15, armor: 5, speed: 4, vision: 9, steps: 0); + var settings = new GameSettings(); + + var choices = TreasureSelector.GenerateBonusChoices(p, settings); + + Assert.IsTrue(choices.Count > 0, "Should produce at least one choice."); + Assert.IsTrue(choices.Any(t => t.Type == BonusType.Strength), + "Dominant Strength should lead to a Strength-focused bonus being added."); + // Vision is high; generator may remove Vision from candidate types. Not asserting its absence (random), + // but we at least ensure there are no more than 3 options as per spec. + Assert.IsTrue(choices.Count <= 3); + } + + + [TestMethod] + public void ChooseWithPicker_OutOfRangeIndex_FallsBackToZero_AndReturnsAChoice() + { + var p = NewPlayer(life: 1, maxLife: 100, strength: 12, armor: 1, speed: 1, vision: 0); + var settings = new GameSettings(); + var picker = new FakeTreasurePicker(toReturn: 999); // invalid index + + var chosen = TreasureSelector.ChooseWithPicker(p, settings, picker); + + Assert.IsTrue(Enum.IsDefined(typeof(BonusType), chosen.Type), + "Returned treasure should be valid even when picker returns an out-of-range index."); + Assert.IsNotNull(picker.LastContext); + Assert.IsNotNull(picker.LastViews); + // Title comes from i18n; just ensure it's non-empty. + Assert.IsFalse(string.IsNullOrWhiteSpace(picker.LastContext!.Title)); + Assert.IsTrue(picker.LastViews!.Count >= 1 && picker.LastViews!.Count <= 3); + } + + [TestMethod] + public void ApplyBonus_Item_New_AddsToInventory_AndMayAffectPlayerStats() + { + var p = NewPlayer(vision: 0, items: Array.Empty()); + var settings = new GameSettings(); + + // Pick an item with a special stat side-effect (GlassesOfClairvoyance sets Vision to item.Value if higher) + var itemId = ItemId.GlassesOfClairvoyance; + var msg = TreasureSelector.ApplyBonus( + new Treasure { Type = BonusType.Item, Value = (int)itemId }, p, settings, ui: new FakeInventoryUI(0)); + + Assert.IsTrue(p.Inventory.Any(i => i.Id == itemId)); + // Vision should be at least the item's value after picking it. + var picked = p.Inventory.First(i => i.Id == itemId); + Assert.IsTrue(p.Vision >= picked.Value); + // Message contains item name (don’t assert full i18n) + StringAssert.Contains(msg, picked.Name); + } + + [TestMethod] + public void ApplyBonus_Item_ExistingUpgradable_IncreasesValueAndRarity() + { + var baseItem = ItemFactory.CreateItem(ItemId.EnchantedPouch); + var existing = new Item + { + Id = baseItem.Id, + Name = baseItem.Name, + Effect = baseItem.Effect, + Value = baseItem.Value, + UpgradableIncrementValue = baseItem.UpgradableIncrementValue, // > 0 (upgradable) + Rarity = ItemRarity.Common + }; + + var p = NewPlayer(items: new[] { existing }); + var settings = new GameSettings(); + + var msg = TreasureSelector.ApplyBonus( + new Treasure { Type = BonusType.Item, Value = (int)existing.Id }, p, settings, ui: new FakeInventoryUI(0)); + + var upgraded = p.Inventory.First(i => i.Id == existing.Id); + Assert.AreEqual(baseItem.Value + baseItem.UpgradableIncrementValue, upgraded.Value); + Assert.AreEqual(ItemRarity.Common + 1, upgraded.Rarity); + StringAssert.Contains(msg, baseItem.Name); + } + + [TestMethod] + public void ApplyBonus_Item_ExistingNotUpgradable_ReturnsAlreadyOwnedMessage() + { + var baseItem = ItemFactory.CreateItem(ItemId.TalismanOfTheLastBreath); + Assert.AreEqual(0, baseItem.UpgradableIncrementValue, "Test expects a non-upgradable item."); + + var existing = new Item + { + Id = baseItem.Id, + Name = baseItem.Name, + Effect = baseItem.Effect, + Value = baseItem.Value, + UpgradableIncrementValue = 0, + Rarity = baseItem.Rarity + }; + + var p = NewPlayer(items: new[] { existing }); + var settings = new GameSettings(); + + var msg = TreasureSelector.ApplyBonus( + new Treasure { Type = BonusType.Item, Value = (int)existing.Id }, p, settings, ui: new FakeInventoryUI(0)); + + // Inventory unchanged, message indicates already owned non-upgradable + Assert.AreEqual(1, p.Inventory.Count); + StringAssert.Contains(msg, baseItem.Name); + } + + [TestMethod] + public void ApplyBonus_Item_FullInventory_DropReplacesItem() + { + var settings = new GameSettings(); + + // 3 items already (full) + var i1 = ItemFactory.CreateItem(ItemId.HolyBible); + var i2 = ItemFactory.CreateItem(ItemId.SacredCrucifix); + var i3 = ItemFactory.CreateItem(ItemId.RingOfEndurance); + var p = NewPlayer(items: new[] { i1, i2, i3 }); + + var incoming = ItemId.BootsOfEchoStep; + + // UI chooses to drop index 0 + var msg = TreasureSelector.ApplyBonus( + new Treasure { Type = BonusType.Item, Value = (int)incoming }, p, settings, ui: new FakeInventoryUI(0)); + + Assert.AreEqual(3, p.Inventory.Count); + Assert.IsFalse(p.Inventory.Any(i => i.Id == i1.Id), "Index 0 should be dropped."); + Assert.IsTrue(p.Inventory.Any(i => i.Id == incoming), "New item should be added."); + } + + [TestMethod] + public void ApplyBonus_Item_FullInventory_KeepCurrent() + { + var settings = new GameSettings(); + + var i1 = ItemFactory.CreateItem(ItemId.HolyBible); + var i2 = ItemFactory.CreateItem(ItemId.SacredCrucifix); + var i3 = ItemFactory.CreateItem(ItemId.RingOfEndurance); + var p = NewPlayer(items: new[] { i1, i2, i3 }); + + var incoming = ItemId.HawkEye; + + // UI returns an out-of-range drop index -> keep current inventory + var msg = TreasureSelector.ApplyBonus( + new Treasure { Type = BonusType.Item, Value = (int)incoming }, p, settings, ui: new FakeInventoryUI(dropIndex: 99)); + + Assert.AreEqual(3, p.Inventory.Count); + Assert.IsFalse(p.Inventory.Any(i => i.Id == incoming)); + } + + private static Player NewPlayer( + int life = 50, int maxLife = 100, int strength = 1, int armor = 1, int speed = 1, int vision = 0, int steps = 0, + IEnumerable? items = null) + { + return new Player + { + LifePoint = life, + MaxLifePoint = maxLife, + Strength = strength, + Armor = armor, + Speed = speed, + Vision = vision, + Steps = steps, + Inventory = items?.ToList() ?? new List() + }; + } +} diff --git a/Roguelike.Core.Tests/Game/GameLoop/GameEngineTests.cs b/Roguelike.Core.Tests/Game/GameLoop/GameEngineTests.cs index bfc7a79..1e40fbe 100644 --- a/Roguelike.Core.Tests/Game/GameLoop/GameEngineTests.cs +++ b/Roguelike.Core.Tests/Game/GameLoop/GameEngineTests.cs @@ -23,8 +23,8 @@ private static GameEngine CreateEngine(out FakeRenderer renderer, out FakeClock clock, new FakeCombatRenderer(), new FakeDialogueRenderer(), - new FakeTreasurePicker(), - new FakeInventoryUI()); + new FakeTreasurePicker(0), + new FakeInventoryUI(0)); return engine; } diff --git a/Roguelike.Core.Tests/Game/Levels/EnenyBagsTests.cs b/Roguelike.Core.Tests/Game/Levels/EnenyBagsTests.cs new file mode 100644 index 0000000..9965e15 --- /dev/null +++ b/Roguelike.Core.Tests/Game/Levels/EnenyBagsTests.cs @@ -0,0 +1,114 @@ +using Roguelike.Core.Game.Characters.Enemies; +using Roguelike.Core.Game.Levels; + +namespace Roguelike.Core.Tests.Game.Levels; + +[TestClass] +public class EnemyBagsTests +{ + [DataTestMethod] + [DataRow(0)] + [DataRow(16)] + [DataRow(int.MinValue)] + [DataRow(int.MaxValue)] + public void GetByLevelAndType_InvalidLevel_Throws(int level) + { + Assert.ThrowsException(() => + EnemyBags.GetByLevelAndType(level, new List())); + } + + [TestMethod] + public void GetByLevelAndType_EmptyTypes_ReturnsEmpty() + { + var result = EnemyBags.GetByLevelAndType(1, new List()); + Assert.AreEqual(0, result.Count); + } + + [DataTestMethod] + [DynamicData(nameof(AllLevelIndices), DynamicDataSourceType.Method)] + public void GetByLevelAndType_AllTypes_ReturnsExactLevelBag(int level) + { + var allTypes = Enum.GetValues(typeof(EnemyType)).Cast().ToList(); + + var expected = EnemyBags.Levels[level - 1]; + var actual = EnemyBags.GetByLevelAndType(level, allTypes); + + AssertDictionariesEqual(expected, actual, $"Level {level} bag mismatch."); + } + + // Uses a few individual types (and a combo) to ensure filtering works and counts match. + [DataTestMethod] + [DynamicData(nameof(SomeTypeSelections), DynamicDataSourceType.Method)] + public void GetByLevelAndType_FiltersByType_IntersectionOnly(int level, List selectedTypes) + { + // Build expected via the same helper (keeps tests resilient to future mapping changes). + var allowedIds = selectedTypes + .SelectMany(EnemyTypeHelper.GetEnemyIdsByType) + .ToHashSet(); + + var levelBag = EnemyBags.Levels[level - 1]; + + var expected = levelBag + .Where(kv => allowedIds.Contains(kv.Key)) + .ToDictionary(kv => kv.Key, kv => kv.Value); + + var actual = EnemyBags.GetByLevelAndType(level, selectedTypes); + + AssertDictionariesEqual(expected, actual, $"Level {level} filtering mismatch."); + } + + private static IEnumerable AllLevelIndices() + { + // levels are 1..15 + for (int i = 1; i <= 15; i++) + yield return new object[] { i }; + } + + private static IEnumerable SomeTypeSelections() + { + // Pick up to 3 concrete EnemyType values if the enum has that many. + var all = Enum.GetValues(typeof(EnemyType)).Cast().ToList(); + + if (all.Count == 0) + { + // If the enum is empty (unlikely), still run a no-op case to keep coverage stable. + yield return new object[] { 1, new List() }; + yield break; + } + + // Single type (first) + yield return new object[] { 1, new List { all[0] } }; + + // If available: second single type at a different level + if (all.Count >= 2) + yield return new object[] { 8, new List { all[1] } }; + + // If available: third single type at another level + if (all.Count >= 3) + yield return new object[] { 12, new List { all[2] } }; + + // A combo of the first few types to test union behavior + var take = Math.Min(3, all.Count); + yield return new object[] { 9, all.Take(take).ToList() }; + } + + private static void AssertDictionariesEqual( + IReadOnlyDictionary expected, + IReadOnlyDictionary actual, + string? message = null) + { + Assert.AreEqual(expected.Count, actual.Count, $"Count differs. {message}"); + + foreach (var (id, count) in expected) + { + Assert.IsTrue(actual.ContainsKey(id), $"Missing id: {id}. {message}"); + Assert.AreEqual(count, actual[id], $"Count mismatch for {id}. {message}"); + } + + // Ensure no extra keys slipped in + foreach (var id in actual.Keys) + { + Assert.IsTrue(expected.ContainsKey(id), $"Unexpected id: {id}. {message}"); + } + } +} diff --git a/Roguelike.Core.Tests/Game/Systems/Logics/WaveAndFogSystemTests.cs b/Roguelike.Core.Tests/Game/Systems/Logics/WaveAndFogSystemTests.cs index 02d01dd..7bdd525 100644 --- a/Roguelike.Core.Tests/Game/Systems/Logics/WaveAndFogSystemTests.cs +++ b/Roguelike.Core.Tests/Game/Systems/Logics/WaveAndFogSystemTests.cs @@ -35,8 +35,8 @@ private static (WaveAndFogSystem sys, TurnContext ctx, LevelManager level, Playe settings, new FakeCombatRenderer(), new FakeDialogueRenderer(), - new FakeTreasurePicker(), - new FakeInventoryUI()); + new FakeTreasurePicker(0), + new FakeInventoryUI(0)); var ctx = new TurnContext(level, settings, diff); var sys = new WaveAndFogSystem(playerController); diff --git a/Roguelike.Core.Tests/Roguelike.Core.Tests.csproj b/Roguelike.Core.Tests/Roguelike.Core.Tests.csproj index 046a70d..f22f18a 100644 --- a/Roguelike.Core.Tests/Roguelike.Core.Tests.csproj +++ b/Roguelike.Core.Tests/Roguelike.Core.Tests.csproj @@ -8,6 +8,15 @@ true + + + + + + + + +