public void TestOnlySecondUpgradeBackerWeaponsAreRandomizedByDefault() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestRandomizeDropQuestCraft\"; var gameFileReader = new GameFileService(_opts, new UassetService()); GameFiles inputFiles = gameFileReader.ReadAllFiles(_opts.InputPath); List <string> firstAndLastBackerWeapons = inputFiles.CraftList .Where(entry => entry.IsBackerWeapon() && !Constants.ItemName16BitCoin.Equals(entry.Value.Ingredient2Id)) .Select(entry => entry.GetItemName()) .ToList(); // Act Program.RunMain(_opts); //Assert GameFiles outputFiles = gameFileReader.ReadAllFiles(FolderPathOutput); int numberAssignedFirstAndLastBackerWeapons = outputFiles.DropList .FindAll(entry => firstAndLastBackerWeapons.Contains(entry.GetItemName())) .Count; Assert.AreEqual(0, numberAssignedFirstAndLastBackerWeapons); numberAssignedFirstAndLastBackerWeapons = outputFiles.QuestList .FindAll(entry => firstAndLastBackerWeapons.Contains(entry.GetItemName())) .Count; Assert.AreEqual(0, numberAssignedFirstAndLastBackerWeapons); }
public void TestResultListsEntryCountIsUnchanged() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestRandomizeDropQuestCraft\"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); GameFiles inputFiles = gameFileReader.ReadAllFiles(_opts.InputPath); GameFiles outputFiles = gameFileReader.ReadAllFiles(FolderPathOutput); //Assert Assert.AreEqual(inputFiles.QuestList.Count, outputFiles.QuestList.Count); Assert.AreEqual(inputFiles.DropList.Count, outputFiles.DropList.Count); Assert.AreEqual(inputFiles.CraftList.Count, GetResultingCraftListItemCount(outputFiles.CraftList)); }
public void TestNonValidEntriesAreUnchanged() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestRandomizeDropQuestCraft\"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); GameFiles inputFiles = gameFileReader.ReadAllFiles(_opts.InputPath); GameFiles outputFiles = gameFileReader.ReadAllFiles(FolderPathOutput); //Assert AssertInvalidEntriesAreEqual(inputFiles.DropList, outputFiles.DropList); AssertInvalidEntriesAreEqual(inputFiles.QuestList, outputFiles.QuestList); AssertInvalidEntriesAreEqual(inputFiles.CraftList, outputFiles.CraftList); }
public void TestAllSingleInstanceUniqueItemsPresentInResultLists() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestRandomizeDropQuestCraft\"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); GameFiles inputFiles = gameFileReader.ReadAllFiles(_opts.InputPath); GameFiles outputFiles = gameFileReader.ReadAllFiles(FolderPathOutput); //Assert int expectedUniqueItemCount = CountAllItemsWithNamesContaining("unique_", inputFiles); int actualUniqueItemCount = CountAllItemsWithNamesContaining("unique_", outputFiles); Assert.AreEqual(expectedUniqueItemCount, actualUniqueItemCount); }
public void TestExemptItemTypeEntriesAreUnchanged() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestRandomizeDropQuestCraft\"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); //Assert List <DropItemEntry> inputDropList = gameFileReader.ReadAllFiles(_opts.InputPath).DropList; List <DropItemEntry> outputDropList = gameFileReader.ReadAllFiles(FolderPathOutput).DropList; AssertEntriesWithTypeAreUnchanged(inputDropList, outputDropList, Constants.ItemTypeConsumable); AssertEntriesWithTypeAreUnchanged(inputDropList, outputDropList, Constants.ItemTypeCraftingMaterials); AssertEntriesWithTypeAreUnchanged(inputDropList, outputDropList, Constants.ItemTypeNone); }
public void TestThatIfUniqueItemHasSeveralInstancesItWillTakeUpOnlyOneEntryIfAllAreAssignedToCraft() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestMultipleInstanceUniqueItems\"; _opts.SeedText = "SeedText-MultipleUniquesAreAllAssignedToCrafting"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); GameFiles inputFiles = gameFileReader.ReadAllFiles(_opts.InputPath); GameFiles outputFiles = gameFileReader.ReadAllFiles(FolderPathOutput); //Assert int actualDropAndQuestCount = CountItemsWithNamesContaining("unique_weapon_1", outputFiles.DropList); actualDropAndQuestCount += CountItemsWithNamesContaining("unique_weapon_1", outputFiles.QuestList); int actualCraftCount = CountItemsWithNamesContaining("unique_weapon_1", outputFiles.CraftList); Assert.AreEqual(0, actualDropAndQuestCount); Assert.AreEqual(1, actualCraftCount); int expectedNumberOfEntriesInCraft = inputFiles.CraftList.Count + 1; Assert.AreEqual(expectedNumberOfEntriesInCraft, outputFiles.CraftList.Count); }
public void TestWeaponInKeyTypeChestIsNotMoved() { // Assign const string keyWeaponId = "keyitem_weapon_1"; _opts.InputPath = @"file-resources\ComponentTest\TestRandomizeDropQuestCraft\"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); GameFiles inputFiles = gameFileReader.ReadAllFiles(_opts.InputPath); GameFiles outputFiles = gameFileReader.ReadAllFiles(FolderPathOutput); //Assert List <DropItemEntry> inputDroplist = inputFiles.DropList; List <DropItemEntry> outputDroplist = outputFiles.DropList; DropItemEntry originalKeyWeaponEntry = inputDroplist.Find(entry => keyWeaponId.Equals(entry.GetItemName())); DropItemEntry newKeyWeaponEntry = outputDroplist.Find(entry => keyWeaponId.Equals(entry.GetItemName())); Assert.AreEqual(originalKeyWeaponEntry, newKeyWeaponEntry); Assert.AreEqual(inputDroplist.IndexOf(originalKeyWeaponEntry), outputDroplist.IndexOf(newKeyWeaponEntry)); Assert.AreEqual(0, CountItemsWithNamesContaining(keyWeaponId, outputFiles.QuestList)); Assert.AreEqual(0, CountItemsWithNamesContaining(keyWeaponId, outputFiles.CraftList)); }
public void TestUniqueConsumablesAreNeverPlacedInCraftList() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestConsumablesOnly\"; _opts.SeedText = "SeedText-UniqueConsumableNeverInCraftList"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); GameFiles outputFiles = gameFileReader.ReadAllFiles(FolderPathOutput); //Assert int countUniqueConsumables = CountAllItemsWithNamesContaining("unique_consumable", outputFiles); Assert.AreEqual(0, countUniqueConsumables); }
private static void CreateTrueRandomizerMod(Options opts, GameFileService gameFileService, ModManager modManager) { GameFiles gameFiles = gameFileService.ReadAllFiles(); modManager.ApplyMods(gameFiles); if (opts.IsJsonOutput || opts.IsJsonOnly) { gameFileService.WriteModifiedJsonFiles(gameFiles, opts.OutputPath); } if (!opts.IsJsonOnly) { var packageFilePath = new FilePath(Path.GetFullPath(opts.OutputPath), opts.SeedText, Constants.FileExtensionPak, Constants.DefaultPakFileName); gameFileService.WritePackagedModFile(gameFiles, packageFilePath); } }
public void TestThatIfCraftableItemCanBeFoundInMultiplesItCanBeAssignedInMultiples() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestMultipleInstanceUniqueItems\"; _opts.SeedText = "SeedText-TwoCraftableInDropAndQuestBothSetAsFindable"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); GameFiles outputFiles = gameFileReader.ReadAllFiles(FolderPathOutput); //Assert int actualDropAndQuestCount = CountItemsWithNamesContaining("craftable_weapon_1", outputFiles.DropList); actualDropAndQuestCount += CountItemsWithNamesContaining("craftable_weapon_1", outputFiles.QuestList); Assert.AreEqual(2, actualDropAndQuestCount); }
public void TestSingleInstanceConsumablesCanBeAssignedMultipleTimes() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestConsumablesOnly\"; _opts.SeedText = "SeedText-SingleInstanceConsumableExistsInMultiples"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); GameFiles outputFiles = gameFileReader.ReadAllFiles(FolderPathOutput); //Assert const string singleInstanceConsumableName = "onlycraftable_consumable_1"; int count = CountItemsWithNamesContaining(singleInstanceConsumableName, outputFiles.QuestList); count += CountItemsWithNamesContaining(singleInstanceConsumableName, outputFiles.DropList); Assert.IsTrue(count > 1); }
public void TestCraftListContainsNoDuplicates() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestRandomizeDropQuestCraft\"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); //Assert List <CraftItemEntry> resultCraftList = gameFileReader.ReadAllFiles(FolderPathOutput).CraftList; List <string> craftItemNames = resultCraftList.Where(entry => entry.IsEntryValid() && !Constants.ItemNameNone.Equals(entry.GetItemName())) .Select(entry => entry.GetItemName()) .ToList(); HashSet <string> craftItemNameSet = craftItemNames.ToHashSet(); Assert.AreEqual(craftItemNames.Count, craftItemNameSet.Count); }
public void TestFixedKeyLocationsHaveTypeKey() { // Assign const int expectedRandomKeyLocations = 0; _opts.NumberOfKeyLocations = expectedRandomKeyLocations; _opts.InputPath = @"file-resources\ComponentTest\TestRandomizeDropQuestCraft\"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); //Assert List <DropItemEntry> outputDropList = gameFileReader.ReadAllFiles(FolderPathOutput).DropList; AssertKeyTypeForNamedEntry(outputDropList, "Swordsman"); AssertKeyTypeForNamedEntry(outputDropList, "CertificationboardEvent"); AssertKeyTypeForNamedEntry(outputDropList, "Treasurebox_SAN024"); }
public void TestAllFoodItemsAreReplacedWithFoodNeededForQuests() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestRandomizeDropQuestCraft\"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); GameFiles outputFiles = gameFileReader.ReadAllFiles(FolderPathOutput); //Assert int assignedQuestFoodCount = CountItemsWithNamesContaining("quest_food", outputFiles.DropList); assignedQuestFoodCount += CountItemsWithNamesContaining("quest_food", outputFiles.QuestList); Assert.AreEqual(2, assignedQuestFoodCount); int questFoodAssignedToCraftList = CountItemsWithNamesContaining("quest_food", outputFiles.CraftList); Assert.AreEqual(0, questFoodAssignedToCraftList); }
public void TestThatIfUniqueItemHasSeveralInstancesItCanBeBothDropAndCraftable() { // Assign _opts.InputPath = @"file-resources\ComponentTest\TestMultipleInstanceUniqueItems\"; _opts.SeedText = "SeedText-1UniqueItemInDropOrQuest1InCraft"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); GameFiles outputFiles = gameFileReader.ReadAllFiles(FolderPathOutput); //Assert int actualDropAndQuestCount = CountItemsWithNamesContaining("unique_weapon_1", outputFiles.DropList); actualDropAndQuestCount += CountItemsWithNamesContaining("unique_weapon_1", outputFiles.QuestList); int actualCraftCount = CountItemsWithNamesContaining("unique_weapon_1", outputFiles.CraftList); Assert.AreEqual(1, actualDropAndQuestCount); Assert.AreEqual(1, actualCraftCount); }
public void TestUserDefinedNumberOfEntriesAreSetAsKeyLocation() { // Assign const int expectedRandomKeyLocations = 5; const int expectedFixedKeyLocations = 3; _opts.NumberOfKeyLocations = expectedRandomKeyLocations; _opts.InputPath = @"file-resources\ComponentTest\TestRandomizeDropQuestCraft\"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); //Assert List <DropItemEntry> outputDropList = gameFileReader.ReadAllFiles(FolderPathOutput).DropList; int actualNumberOfKeyLocations = GetNumberOfEntriesWithType(outputDropList, Constants.ItemTypeKey); int expectedTotalKeyLocations = expectedFixedKeyLocations + expectedRandomKeyLocations; Assert.AreEqual(expectedTotalKeyLocations, actualNumberOfKeyLocations); }
public void TestNonExemptNonKeyEntriesAllHaveSameType() { // Assign const int expectedRandomKeyLocations = 5; const int numberOfTypesThatAreNotChangeable = 3; _opts.NumberOfKeyLocations = expectedRandomKeyLocations; _opts.InputPath = @"file-resources\ComponentTest\TestRandomizeDropQuestCraft\"; var gameFileReader = new GameFileService(_opts, new UassetService()); // Act Program.RunMain(_opts); //Assert List <DropItemEntry> outputDropList = gameFileReader.ReadAllFiles(FolderPathOutput).DropList; int numberOfValidTypesNames = outputDropList.Where(entry => entry.IsEntryValid()) .Select(entry => entry.GetItemType()) .Distinct() .Count(); Assert.AreEqual(numberOfTypesThatAreNotChangeable + 1, numberOfValidTypesNames); }