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();