FIL-11 Added BlockGroupsEnabled flag to ItemFilterScript (encapsulated in new ItemFilterScriptSettings object)

This commit is contained in:
Ben Wallis 2017-05-14 13:02:30 +01:00
parent bb77138854
commit ab7aefa8a6
9 changed files with 150 additions and 99 deletions

View File

@ -84,6 +84,7 @@
<Compile Include="ItemFilterBlock.cs" />
<Compile Include="ItemFilterBlockGroup.cs" />
<Compile Include="ItemFilterScript.cs" />
<Compile Include="ItemFilterScriptSettings.cs" />
<Compile Include="ItemFilterSection.cs" />
<Compile Include="ItemSet.cs" />
<Compile Include="NumericFilterPredicate.cs" />

View File

@ -15,6 +15,8 @@ namespace Filtration.ObjectModel
string FilePath { get; set; }
string Description { get; set; }
DateTime DateModified { get; set; }
IItemFilterScriptSettings ItemFilterScriptSettings { get; }
List<string> 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<IItemFilterBlock> 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; }

View File

@ -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; }
}
}

View File

@ -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<IItemFilterBlockItem> blockItems, string inputString);
}

View File

@ -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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IEnumerable<string>>())).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<IEnumerable<string>>())).Returns(inputBlockGroup).Verifiable();
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null);
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of<IItemFilterScriptSettings>());
// Assert
Assert.AreEqual(true, inputBlockGroup.IsChecked);
@ -112,41 +97,56 @@ namespace Filtration.Parser.Tests.Services
// Act
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>())).Returns(inputBlockGroup).Verifiable();
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null);
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of<IItemFilterScriptSettings>());
// 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<IEnumerable<string>>())).Returns(inputBlockGroup).Verifiable();
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of<IItemFilterScriptSettings>(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<IEnumerable<string>>())).Verifiable();
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null);
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of<IItemFilterScriptSettings>(i => i.BlockGroupsEnabled));
// Assert
_testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>()), 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<IItemFilterScriptSettings>(i => i.BlockGroupsEnabled));
// Assert
_testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>()), 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<IItemFilterScriptSettings>(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<IItemFilterScriptSettings>(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<IItemFilterScriptSettings>(i => i.BlockGroupsEnabled == false));
// Assert
Assert.IsNull(result.BlockGroup);
_testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>()), 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>()));
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>(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<TextColorBlockItem>().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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// Assert
Assert.IsInstanceOf<ItemFilterSection>(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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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<IItemFilterScriptSettings>());
// 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()

View File

@ -32,14 +32,12 @@ namespace Filtration.Parser.Tests.Services
// Arrange
var testInput = Resources.testscript;
_testUtility.MockItemFilterBlockTranslator.Setup(t => t.TranslateStringToItemFilterBlock(It.IsAny<string>(), It.IsAny<ThemeComponentCollection>())).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<string>(), It.IsAny<IItemFilterScriptSettings>()));
}
[Test]
@ -54,9 +52,6 @@ namespace Filtration.Parser.Tests.Services
Environment.NewLine +
"End Script Description";
var mockItemFilterBlockTranslator = new Mock<IItemFilterBlockTranslator>();
mockItemFilterBlockTranslator.Setup(t => t.TranslateStringToItemFilterBlock(It.IsAny<string>(), It.IsAny<ThemeComponentCollection>())).Verifiable();
// Act
var script = _testUtility.ScriptTranslator.TranslateStringToItemFilterScript(testInput);

View File

@ -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;
block.Action = lineOption.StartsWith("Show") ? BlockAction.Show : BlockAction.Hide;
block.Enabled = !lineOption.EndsWith("Disabled");
if (itemFilterScriptSettings.BlockGroupsEnabled)
{
AddBlockGroupToBlock(block, trimmedLine);
}
break;
}
case "ItemLevel":
{
AddNumericFilterPredicateItemToBlockItems<ItemLevelBlockItem>(block, trimmedLine);

View File

@ -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:"))
{

View File

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