From ab7aefa8a6790a34aa79c04cfc6563e7215940f8 Mon Sep 17 00:00:00 2001 From: Ben Wallis Date: Sun, 14 May 2017 13:02:30 +0100 Subject: [PATCH] FIL-11 Added BlockGroupsEnabled flag to ItemFilterScript (encapsulated in new ItemFilterScriptSettings object) --- .../Filtration.ObjectModel.csproj | 1 + Filtration.ObjectModel/ItemFilterScript.cs | 5 + .../ItemFilterScriptSettings.cs | 21 +++ .../Services/IItemFilterBlockTranslator.cs | 4 +- .../Services/TestItemFilterBlockTranslator.cs | 148 ++++++++++-------- .../TestItemFilterScriptTranslator.cs | 7 +- .../Services/ItemFilterBlockTranslator.cs | 55 ++++--- .../Services/ItemFilterScriptTranslator.cs | 6 +- .../ViewModels/ItemFilterScriptViewModel.cs | 2 +- 9 files changed, 150 insertions(+), 99 deletions(-) create mode 100644 Filtration.ObjectModel/ItemFilterScriptSettings.cs diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj index 476cae3..b89826e 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -84,6 +84,7 @@ + diff --git a/Filtration.ObjectModel/ItemFilterScript.cs b/Filtration.ObjectModel/ItemFilterScript.cs index 54d7cd6..6a730c2 100644 --- a/Filtration.ObjectModel/ItemFilterScript.cs +++ b/Filtration.ObjectModel/ItemFilterScript.cs @@ -15,6 +15,8 @@ namespace Filtration.ObjectModel string FilePath { get; set; } string Description { get; set; } DateTime DateModified { get; set; } + IItemFilterScriptSettings ItemFilterScriptSettings { get; } + List Validate(); void ReplaceColors(ReplaceColorsParameterSet replaceColorsParameterSet); } @@ -29,6 +31,7 @@ namespace Filtration.ObjectModel new ItemFilterBlockGroup("Root", null) }; ThemeComponents = new ThemeComponentCollection { IsMasterCollection = true}; + ItemFilterScriptSettings = new ItemFilterScriptSettings(ThemeComponents); } public ObservableCollection ItemFilterBlocks { get; } @@ -36,6 +39,8 @@ namespace Filtration.ObjectModel public ThemeComponentCollection ThemeComponents { get; set; } + public IItemFilterScriptSettings ItemFilterScriptSettings { get; } + public string FilePath { get; set; } public string Description { get; set; } public DateTime DateModified { get; set; } diff --git a/Filtration.ObjectModel/ItemFilterScriptSettings.cs b/Filtration.ObjectModel/ItemFilterScriptSettings.cs new file mode 100644 index 0000000..02cd23a --- /dev/null +++ b/Filtration.ObjectModel/ItemFilterScriptSettings.cs @@ -0,0 +1,21 @@ +using Filtration.ObjectModel.ThemeEditor; + +namespace Filtration.ObjectModel +{ + public interface IItemFilterScriptSettings + { + bool BlockGroupsEnabled { get; set; } + ThemeComponentCollection ThemeComponentCollection { get; } + } + + public class ItemFilterScriptSettings : IItemFilterScriptSettings + { + public ItemFilterScriptSettings(ThemeComponentCollection themeComponentCollection) + { + ThemeComponentCollection = themeComponentCollection; + } + + public bool BlockGroupsEnabled { get; set; } + public ThemeComponentCollection ThemeComponentCollection { get; } + } +} \ No newline at end of file diff --git a/Filtration.Parser.Interface/Services/IItemFilterBlockTranslator.cs b/Filtration.Parser.Interface/Services/IItemFilterBlockTranslator.cs index 59d923e..54be87e 100644 --- a/Filtration.Parser.Interface/Services/IItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Interface/Services/IItemFilterBlockTranslator.cs @@ -1,13 +1,11 @@ using System.Collections.ObjectModel; using Filtration.ObjectModel; -using Filtration.ObjectModel.ThemeEditor; namespace Filtration.Parser.Interface.Services { public interface IItemFilterBlockTranslator { - IItemFilterBlock TranslateStringToItemFilterBlock(string inputString, - ThemeComponentCollection masterComponentCollection); + IItemFilterBlock TranslateStringToItemFilterBlock(string inputString, IItemFilterScriptSettings itemFilterScriptSettings); string TranslateItemFilterBlockToString(IItemFilterBlock block); void ReplaceAudioVisualBlockItemsFromString(ObservableCollection blockItems, string inputString); } diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index b06b967..98d02be 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs @@ -34,7 +34,7 @@ namespace Filtration.Parser.Tests.Services " ItemLevel >= 55"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(true, result.Enabled); @@ -48,7 +48,7 @@ namespace Filtration.Parser.Tests.Services " ItemLevel >= 55"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(2, result.BlockItems.Count); @@ -64,7 +64,7 @@ namespace Filtration.Parser.Tests.Services " ItemLevel >= 55"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is ItemLevelBlockItem)); @@ -73,21 +73,6 @@ namespace Filtration.Parser.Tests.Services Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, blockItem.FilterPredicate.PredicateOperator); } - [Test] - public void TranslateStringToItemFilterBlock_BlockGroupComment_CallsBlockGroupHierarchyBuilder() - { - // Arrange - var inputString = "Show # TestBlockGroup" + Environment.NewLine; - var inputBlockGroup = new ItemFilterBlockGroup("TestBlockGroup", null); - - // Act - _testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny>())).Returns(inputBlockGroup).Verifiable(); - _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); - - // Assert - _testUtility.MockBlockGroupHierarchyBuilder.Verify(); - } - [Test] public void TranslateStringToItemFilterBlock_ShowBlock_SetsBlockGroupIsCheckedCorrectly() { @@ -97,7 +82,7 @@ namespace Filtration.Parser.Tests.Services // Act _testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny>())).Returns(inputBlockGroup).Verifiable(); - _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(true, inputBlockGroup.IsChecked); @@ -112,41 +97,56 @@ namespace Filtration.Parser.Tests.Services // Act _testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny>())).Returns(inputBlockGroup).Verifiable(); - _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(false, inputBlockGroup.IsChecked); } [Test] - public void TranslateStringToItemFilterBlock_NoBlockGroupComment_DoesNotCallBlockGroupHierarchyBuilder() + public void TranslateStringToItemFilterBlock_BlockGroupsEnabled_BlockGroupComment_CallsBlockGroupHierarchyBuilder() + { + // Arrange + var inputString = "Show # TestBlockGroup" + Environment.NewLine; + var inputBlockGroup = new ItemFilterBlockGroup("TestBlockGroup", null); + + // Act + _testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny>())).Returns(inputBlockGroup).Verifiable(); + _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of(i => i.BlockGroupsEnabled)); + + // Assert + _testUtility.MockBlockGroupHierarchyBuilder.Verify(); + } + + [Test] + public void TranslateStringToItemFilterBlock_BlockGroupsEnabled_NoBlockGroupComment_DoesNotCallBlockGroupHierarchyBuilder() { // Arrange var inputString = "Show" + Environment.NewLine; // Act _testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny>())).Verifiable(); - _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of(i => i.BlockGroupsEnabled)); // Assert _testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny>()), Times.Never); } [Test] - public void TranslateStringToItemFilterBlock_BlockGroupCommentWithNoGroups_DoesNotThrow() + public void TranslateStringToItemFilterBlock_BlockGroupsEnabled_BlockGroupCommentWithNoGroups_DoesNotThrow() { // Arrange var inputString = "Show #" + Environment.NewLine; // Act - _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of(i => i.BlockGroupsEnabled)); // Assert _testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny>()), Times.Never); } [Test] - public void TranslateStringToItemFilterBlock_BlockGroupComment_SetsBlockItemGroupCorrectly() + public void TranslateStringToItemFilterBlock_BlockGroupsEnabled_BlockGroupComment_SetsBlockItemGroupCorrectly() { // Arrange var inputString = "Show # Test Block Group - Test Sub Block Group - Test Another Block Group" + Environment.NewLine; @@ -158,7 +158,7 @@ namespace Filtration.Parser.Tests.Services .Returns(testBlockGroup) .Verifiable(); - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of(i => i.BlockGroupsEnabled)); // Assert Assert.AreEqual(testBlockGroup, result.BlockGroup); @@ -166,7 +166,7 @@ namespace Filtration.Parser.Tests.Services } [Test] - public void TranslateStringToItemFilterBlock_BlockGroupComment_NoSpacingAroundHyphens_SetsBlockItemGroupCorrectly() + public void TranslateStringToItemFilterBlock_BlockGroupsEnabled_BlockGroupComment_NoSpacingAroundHyphens_SetsBlockItemGroupCorrectly() { // Arrange var inputString = "Show # AAA-BBB-CCC" + Environment.NewLine; @@ -178,13 +178,27 @@ namespace Filtration.Parser.Tests.Services .Returns(testBlockGroup) .Verifiable(); - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of(i => i.BlockGroupsEnabled)); // Assert Assert.AreEqual(testBlockGroup, result.BlockGroup); _testUtility.MockBlockGroupHierarchyBuilder.Verify(); } + [Test] + public void TranslateStringToItemFilterBlock_BlockGroupsDisabled_BlockGroupComment_DoesNotCallBlockGroupHierarchyBuilder() + { + // Arrange + var inputString = "Show # AAA - BBB - CCC" + Environment.NewLine; + + // Act + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of(i => i.BlockGroupsEnabled == false)); + + // Assert + Assert.IsNull(result.BlockGroup); + _testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny>()), Times.Never); + } + [Test] public void TranslateStringToItemFilterBlock_Hide_ReturnsCorrectObject() { @@ -192,7 +206,7 @@ namespace Filtration.Parser.Tests.Services var inputString = "Hide" + Environment.NewLine; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is ActionBlockItem)); @@ -208,7 +222,7 @@ namespace Filtration.Parser.Tests.Services " ItemLevel >= 55"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual("This is a test Block", result.Description); @@ -228,7 +242,7 @@ namespace Filtration.Parser.Tests.Services " ItemLevel >= 55"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual("Second Line", result.Description); @@ -246,7 +260,7 @@ namespace Filtration.Parser.Tests.Services " DropLevel = 40"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert @@ -264,7 +278,7 @@ namespace Filtration.Parser.Tests.Services " Corrupted True"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert @@ -281,7 +295,7 @@ namespace Filtration.Parser.Tests.Services " Identified True"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert @@ -298,7 +312,7 @@ namespace Filtration.Parser.Tests.Services " Quality < 18"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert @@ -316,7 +330,7 @@ namespace Filtration.Parser.Tests.Services " Rarity > Normal"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert @@ -334,7 +348,7 @@ namespace Filtration.Parser.Tests.Services " Rarity Normal"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is RarityBlockItem)); @@ -351,7 +365,7 @@ namespace Filtration.Parser.Tests.Services @" Class ""Test Class 1"" ""TestOneWordClassInQuotes"" TestOneWordClassNotInQuotes ""Test Class 2"""; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is ClassBlockItem)); @@ -370,7 +384,7 @@ namespace Filtration.Parser.Tests.Services @" BaseType ""Test Base Type 1"" ""TestOneWordBaseTypeInQuotes"" TestOneWordBaseTypeNotInQuotes ""Test BaseType 2"""; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is BaseTypeBlockItem)); @@ -389,7 +403,7 @@ namespace Filtration.Parser.Tests.Services " Sockets > 2"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert @@ -407,7 +421,7 @@ namespace Filtration.Parser.Tests.Services " LinkedSockets > 1"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert @@ -425,7 +439,7 @@ namespace Filtration.Parser.Tests.Services " Width = 1"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert @@ -443,7 +457,7 @@ namespace Filtration.Parser.Tests.Services " Height <= 3"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert @@ -461,7 +475,7 @@ namespace Filtration.Parser.Tests.Services " Height <=3"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is HeightBlockItem)); @@ -478,7 +492,7 @@ namespace Filtration.Parser.Tests.Services " SocketGroup RRGB"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is SocketGroupBlockItem)); @@ -496,7 +510,7 @@ namespace Filtration.Parser.Tests.Services " SetTextColor 255 20 100"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is TextColorBlockItem)); @@ -514,7 +528,7 @@ namespace Filtration.Parser.Tests.Services " SetTextColor 65 0 255 12"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is TextColorBlockItem)); @@ -533,7 +547,7 @@ namespace Filtration.Parser.Tests.Services " SetBackgroundColor 255 20 100"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is BackgroundColorBlockItem)); @@ -552,7 +566,7 @@ namespace Filtration.Parser.Tests.Services " SetBorderColor 255 20 100"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is BorderColorBlockItem)); @@ -571,8 +585,8 @@ namespace Filtration.Parser.Tests.Services // Act - Assert.DoesNotThrow(() => _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null)); - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + Assert.DoesNotThrow(() => _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of())); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is BorderColorBlockItem)); @@ -590,9 +604,10 @@ namespace Filtration.Parser.Tests.Services " SetTextColor 255 20 100 # Rare Item Text"; var testComponent = new ThemeComponent(ThemeComponentType.TextColor, "Rare Item Text", new Color { R = 255, G = 20, B = 100}); var testInputThemeComponentCollection = new ThemeComponentCollection { testComponent }; + var testInputItemFilterScriptSettings = Mock.Of(i => i.ThemeComponentCollection == testInputThemeComponentCollection); // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, testInputThemeComponentCollection); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, testInputItemFilterScriptSettings); // Assert var blockItem = result.BlockItems.OfType().First(); @@ -610,7 +625,7 @@ namespace Filtration.Parser.Tests.Services " SetFontSize 15"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is FontSizeBlockItem)); @@ -627,7 +642,7 @@ namespace Filtration.Parser.Tests.Services " PlayAlertSound 4"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is SoundBlockItem)); @@ -645,7 +660,7 @@ namespace Filtration.Parser.Tests.Services " PlayAlertSound 2 95"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is SoundBlockItem)); @@ -662,7 +677,7 @@ namespace Filtration.Parser.Tests.Services var inputString = "# Section: " + testInputSectionDescription; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.IsInstanceOf(result); @@ -697,7 +712,7 @@ namespace Filtration.Parser.Tests.Services " PlayAlertSound 3"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual("Test filter with everything", result.Description); @@ -785,7 +800,7 @@ namespace Filtration.Parser.Tests.Services " Quality < 17"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(2, result.BlockItems.Count(b => b is ItemLevelBlockItem)); @@ -814,7 +829,7 @@ namespace Filtration.Parser.Tests.Services " SetTextColor 255 20 100"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is TextColorBlockItem)); @@ -835,7 +850,7 @@ namespace Filtration.Parser.Tests.Services " SetFontSize 27" + Environment.NewLine; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is FontSizeBlockItem)); @@ -854,7 +869,7 @@ namespace Filtration.Parser.Tests.Services " PlayAlertSound 2" + Environment.NewLine; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is SoundBlockItem)); @@ -872,7 +887,7 @@ namespace Filtration.Parser.Tests.Services " SetBackgroundColor 255 20 100"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is BackgroundColorBlockItem)); @@ -891,7 +906,7 @@ namespace Filtration.Parser.Tests.Services " SetBorderColor 255 20 100"; // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is BorderColorBlockItem)); @@ -919,7 +934,7 @@ namespace Filtration.Parser.Tests.Services _testUtility.TestBlock.BlockItems.Add(new WidthBlockItem(FilterPredicateOperator.Equal, 4)); // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is RarityBlockItem)); @@ -946,7 +961,7 @@ namespace Filtration.Parser.Tests.Services _testUtility.TestBlock.BlockItems.Add(new WidthBlockItem(FilterPredicateOperator.Equal, 4)); // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is ActionBlockItem)); @@ -981,7 +996,7 @@ namespace Filtration.Parser.Tests.Services _testUtility.TestBlock.BlockItems.Add(new WidthBlockItem(FilterPredicateOperator.Equal, 4)); // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of()); // Assert Assert.AreEqual(1, result.BlockItems.Count(b => b is ActionBlockItem)); @@ -1812,6 +1827,7 @@ namespace Filtration.Parser.Tests.Services // Assert } + private class ItemFilterBlockTranslatorTestUtility { public ItemFilterBlockTranslatorTestUtility() diff --git a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs index bec3bd6..cb8000c 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs @@ -32,14 +32,12 @@ namespace Filtration.Parser.Tests.Services // Arrange var testInput = Resources.testscript; - _testUtility.MockItemFilterBlockTranslator.Setup(t => t.TranslateStringToItemFilterBlock(It.IsAny(), It.IsAny())).Verifiable(); - // Act var script = _testUtility.ScriptTranslator.TranslateStringToItemFilterScript(testInput); // Assert Assert.AreEqual(5, script.ItemFilterBlocks.Count); - _testUtility.MockItemFilterBlockTranslator.Verify(); + _testUtility.MockItemFilterBlockTranslator.Verify(t => t.TranslateStringToItemFilterBlock(It.IsAny(), It.IsAny())); } [Test] @@ -54,9 +52,6 @@ namespace Filtration.Parser.Tests.Services Environment.NewLine + "End Script Description"; - var mockItemFilterBlockTranslator = new Mock(); - mockItemFilterBlockTranslator.Setup(t => t.TranslateStringToItemFilterBlock(It.IsAny(), It.IsAny())).Verifiable(); - // Act var script = _testUtility.ScriptTranslator.TranslateStringToItemFilterScript(testInput); diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index 23553a9..36409e3 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -31,9 +31,9 @@ namespace Filtration.Parser.Services // This method converts a string into a ItemFilterBlock. This is used for pasting ItemFilterBlocks // and reading ItemFilterScripts from a file. - public IItemFilterBlock TranslateStringToItemFilterBlock(string inputString, ThemeComponentCollection masterComponentCollection) + public IItemFilterBlock TranslateStringToItemFilterBlock(string inputString, IItemFilterScriptSettings itemFilterScriptSettings) { - _masterComponentCollection = masterComponentCollection; + _masterComponentCollection = itemFilterScriptSettings.ThemeComponentCollection; var block = new ItemFilterBlock(); var showHideFound = false; @@ -63,30 +63,45 @@ namespace Filtration.Parser.Services var lineOption = trimmedLine.Substring(0, spaceOrEndOfLinePos); switch (lineOption) { + + //case "Show": + // showHideFound = true; + // block.Action = BlockAction.Show; + // block.Enabled = true; + // AddBlockGroupToBlock(block, trimmedLine); + // break; + //case "Hide": + // showHideFound = true; + // block.Action = BlockAction.Hide; + // block.Enabled = true; + // AddBlockGroupToBlock(block, trimmedLine); + // break; + //case "ShowDisabled": + // showHideFound = true; + // block.Action = BlockAction.Show; + // block.Enabled = false; + // AddBlockGroupToBlock(block, trimmedLine); + // break; + //case "HideDisabled": + // showHideFound = true; + // block.Action = BlockAction.Hide; + // block.Enabled = false; + // AddBlockGroupToBlock(block, trimmedLine); + // break; case "Show": - showHideFound = true; - block.Action = BlockAction.Show; - block.Enabled = true; - AddBlockGroupToBlock(block, trimmedLine); - break; case "Hide": - showHideFound = true; - block.Action = BlockAction.Hide; - block.Enabled = true; - AddBlockGroupToBlock(block, trimmedLine); - break; case "ShowDisabled": - showHideFound = true; - block.Action = BlockAction.Show; - block.Enabled = false; - AddBlockGroupToBlock(block, trimmedLine); - break; case "HideDisabled": + { showHideFound = true; - block.Action = BlockAction.Hide; - block.Enabled = false; - AddBlockGroupToBlock(block, trimmedLine); + block.Action = lineOption.StartsWith("Show") ? BlockAction.Show : BlockAction.Hide; + block.Enabled = !lineOption.EndsWith("Disabled"); + if (itemFilterScriptSettings.BlockGroupsEnabled) + { + AddBlockGroupToBlock(block, trimmedLine); + } break; + } case "ItemLevel": { AddNumericFilterPredicateItemToBlockItems(block, trimmedLine); diff --git a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs index 03dccde..41173d0 100644 --- a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs @@ -22,7 +22,7 @@ namespace Filtration.Parser.Services _blockGroupHierarchyBuilder = blockGroupHierarchyBuilder; } - public string PreprocessDisabledBlocks(string inputString) + public static string PreprocessDisabledBlocks(string inputString) { bool inDisabledBlock = false; var showHideFound = false; @@ -120,7 +120,7 @@ namespace Filtration.Parser.Services var block = new string[end - begin]; Array.Copy(lines, begin, block, 0, end - begin); var blockString = string.Join("\r\n", block); - script.ItemFilterBlocks.Add(_blockTranslator.TranslateStringToItemFilterBlock(blockString, script.ThemeComponents)); + script.ItemFilterBlocks.Add(_blockTranslator.TranslateStringToItemFilterBlock(blockString, script.ItemFilterScriptSettings)); } _blockGroupHierarchyBuilder.Cleanup(); @@ -136,7 +136,7 @@ namespace Filtration.Parser.Services foreach (var line in new LineReader(() => new StringReader(inputString))) { currentLine++; - var trimmedLine = line.TrimStart(' ').TrimEnd(' '); + var trimmedLine = line.Trim(' '); if (trimmedLine.StartsWith("Show") || trimmedLine.StartsWith("Hide") || trimmedLine.StartsWith("# Section:")) { diff --git a/Filtration/ViewModels/ItemFilterScriptViewModel.cs b/Filtration/ViewModels/ItemFilterScriptViewModel.cs index 3aa590a..c061b84 100644 --- a/Filtration/ViewModels/ItemFilterScriptViewModel.cs +++ b/Filtration/ViewModels/ItemFilterScriptViewModel.cs @@ -622,7 +622,7 @@ namespace Filtration.ViewModels if (string.IsNullOrEmpty(clipboardText)) return; _blockGroupHierarchyBuilder.Initialise(Script.ItemFilterBlockGroups.First()); - var translatedBlock = _blockTranslator.TranslateStringToItemFilterBlock(clipboardText, Script.ThemeComponents); + var translatedBlock = _blockTranslator.TranslateStringToItemFilterBlock(clipboardText, Script.ItemFilterScriptSettings); if (translatedBlock == null) return; var vm = _itemFilterBlockViewModelFactory.Create();