Implemented BlockGroups and related translation
This commit is contained in:
@@ -47,10 +47,12 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Models\TestItemFilterBlock.cs" />
|
||||
<Compile Include="Models\TestItemFilterBlockGroup.cs" />
|
||||
<Compile Include="Models\TestItemFilterScript.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Services\TestItemFilterPersistenceService.cs" />
|
||||
<Compile Include="Services\TestStaticDataService.cs" />
|
||||
<Compile Include="Translators\TestBlockGroupHierarchyBuilder.cs" />
|
||||
<Compile Include="Translators\TestItemFilterBlockTranslator.cs" />
|
||||
<Compile Include="Translators\TestItemFilterScriptTranslator.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -29,10 +29,8 @@ namespace Filtration.Tests.Models
|
||||
{
|
||||
// Arrange
|
||||
|
||||
var script = new ItemFilterScript
|
||||
{
|
||||
ItemFilterBlocks = new ObservableCollection<ItemFilterBlock> {new ItemFilterBlock()}
|
||||
};
|
||||
var script = new ItemFilterScript();
|
||||
script.ItemFilterBlocks.Add(new ItemFilterBlock());
|
||||
|
||||
// Act
|
||||
var result = script.Validate();
|
||||
@@ -62,15 +60,12 @@ namespace Filtration.Tests.Models
|
||||
var testInputBlock3 = new ItemFilterBlock();
|
||||
testInputBlock3.BlockItems.Add(new BackgroundColorBlockItem(new Color { A = 255, R = 255, G = 0, B = 0 }));
|
||||
|
||||
var script = new ItemFilterScript()
|
||||
{
|
||||
ItemFilterBlocks = new ObservableCollection<ItemFilterBlock>
|
||||
{
|
||||
testInputBlock1,
|
||||
testInputBlock2,
|
||||
testInputBlock3
|
||||
}
|
||||
};
|
||||
var script = new ItemFilterScript();
|
||||
|
||||
script.ItemFilterBlocks.Add(testInputBlock1);
|
||||
script.ItemFilterBlocks.Add(testInputBlock2);
|
||||
script.ItemFilterBlocks.Add(testInputBlock3);
|
||||
|
||||
|
||||
// Act
|
||||
script.ReplaceColors(testInputReplaceColors);
|
||||
@@ -108,14 +103,9 @@ namespace Filtration.Tests.Models
|
||||
testInputBlock2.BlockItems.Add(new BackgroundColorBlockItem(oldBackgroundColor));
|
||||
testInputBlock2.BlockItems.Add(new TextColorBlockItem(new Color {A = 1, R = 2, G = 3, B = 4}));
|
||||
|
||||
var script = new ItemFilterScript
|
||||
{
|
||||
ItemFilterBlocks = new ObservableCollection<ItemFilterBlock>
|
||||
{
|
||||
testInputBlock1,
|
||||
testInputBlock2
|
||||
}
|
||||
};
|
||||
var script = new ItemFilterScript();
|
||||
script.ItemFilterBlocks.Add(testInputBlock1);
|
||||
script.ItemFilterBlocks.Add(testInputBlock2);
|
||||
|
||||
// Act
|
||||
script.ReplaceColors(testInputReplaceColors);
|
||||
@@ -131,3 +121,4 @@ namespace Filtration.Tests.Models
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Media;
|
||||
using Filtration.Enums;
|
||||
@@ -6,6 +7,7 @@ using Filtration.Models;
|
||||
using Filtration.Models.BlockItemBaseTypes;
|
||||
using Filtration.Models.BlockItemTypes;
|
||||
using Filtration.Translators;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace Filtration.Tests.Translators
|
||||
@@ -38,6 +40,64 @@ namespace Filtration.Tests.Translators
|
||||
Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, blockItem.FilterPredicate.PredicateOperator);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_BlockGroupComment_CallsBlockGroupHierarchyBuilder()
|
||||
{
|
||||
// Arrange
|
||||
var inputString = "Show # TestBlockGroup" + Environment.NewLine;
|
||||
|
||||
// Act
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>())).Verifiable();
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString);
|
||||
|
||||
// Assert
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_NoBlockGroupComment_CallsBlockGroupHierarchyBuilder()
|
||||
{
|
||||
// Arrange
|
||||
var inputString = "Show" + Environment.NewLine;
|
||||
|
||||
// Act
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>())).Verifiable();
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString);
|
||||
|
||||
// Assert
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>()), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_BlockGroupCommentWithNoGroups_DoesNotThrow()
|
||||
{
|
||||
// Arrange
|
||||
var inputString = "Show #" + Environment.NewLine;
|
||||
|
||||
// Act
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>())).Verifiable();
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString);
|
||||
|
||||
// Assert
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>()), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_BlockGroupComment_SetsBlockItemGroupCorrectly()
|
||||
{
|
||||
// Arrange
|
||||
var inputString = "Show # Test Block Group - Test Sub Block Group - Test Another Block Group" + Environment.NewLine;
|
||||
var testBlockGroup = new ItemFilterBlockGroup("zzzzz", null);
|
||||
|
||||
// Act
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>())).Returns(testBlockGroup).Verifiable();
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(testBlockGroup, result.BlockGroup);
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_Hide_ReturnsCorrectObject()
|
||||
{
|
||||
@@ -686,6 +746,24 @@ namespace Filtration.Tests.Translators
|
||||
Assert.AreEqual(expectedResult, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateItemFilterBlockToString_HasBlockGroup_ReturnsCorrectString()
|
||||
{
|
||||
// Arrange
|
||||
var expectedResult = "Show # Child 1 Block Group - Child 2 Block Group";
|
||||
|
||||
var rootBlockGroup = new ItemFilterBlockGroup("Root Block Group", null);
|
||||
var child1BlockGroup = new ItemFilterBlockGroup("Child 1 Block Group", rootBlockGroup);
|
||||
var child2BlockGroup = new ItemFilterBlockGroup("Child 2 Block Group", child1BlockGroup);
|
||||
_testUtility.TestBlock.BlockGroup = child2BlockGroup;
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(expectedResult, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateItemFilterBlockToString_FilterTypeHide_ReturnsCorrectString()
|
||||
{
|
||||
@@ -1158,11 +1236,15 @@ namespace Filtration.Tests.Translators
|
||||
// Test Data
|
||||
TestBlock = new ItemFilterBlock();
|
||||
|
||||
// Mock setups
|
||||
MockBlockGroupHierarchyBuilder = new Mock<IBlockGroupHierarchyBuilder>();
|
||||
|
||||
// Class under test instantiation
|
||||
Translator = new ItemFilterBlockTranslator();
|
||||
Translator = new ItemFilterBlockTranslator(MockBlockGroupHierarchyBuilder.Object);
|
||||
}
|
||||
|
||||
public ItemFilterBlock TestBlock { get; set; }
|
||||
public Mock<IBlockGroupHierarchyBuilder> MockBlockGroupHierarchyBuilder { get; private set; }
|
||||
public ItemFilterBlockTranslator Translator { get; private set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,23 +13,28 @@ namespace Filtration.Tests.Translators
|
||||
[TestFixture]
|
||||
public class TestItemFilterScriptTranslator
|
||||
{
|
||||
private ItemFilterScriptTranslatorTestUtility _testUtility;
|
||||
|
||||
[SetUp]
|
||||
public void ItemFilterScriptTranslatorTestSetup()
|
||||
{
|
||||
_testUtility = new ItemFilterScriptTranslatorTestUtility();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterScript_ReturnsScriptWithCorrectNumberOfBlocks()
|
||||
{
|
||||
// Arrange
|
||||
var testInput = File.ReadAllText(@"Resources/testscript.txt");
|
||||
|
||||
var mockItemFilterBlockTranslator = new Mock<IItemFilterBlockTranslator>();
|
||||
mockItemFilterBlockTranslator.Setup(t => t.TranslateStringToItemFilterBlock(It.IsAny<string>())).Verifiable();
|
||||
|
||||
var translator = new ItemFilterScriptTranslator(mockItemFilterBlockTranslator.Object);
|
||||
_testUtility.MockItemFilterBlockTranslator.Setup(t => t.TranslateStringToItemFilterBlock(It.IsAny<string>())).Verifiable();
|
||||
|
||||
// Act
|
||||
var script = translator.TranslateStringToItemFilterScript(testInput);
|
||||
var script = _testUtility.ScriptTranslator.TranslateStringToItemFilterScript(testInput);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(5, script.ItemFilterBlocks.Count);
|
||||
mockItemFilterBlockTranslator.Verify();
|
||||
_testUtility.MockItemFilterBlockTranslator.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -46,10 +51,8 @@ namespace Filtration.Tests.Translators
|
||||
var mockItemFilterBlockTranslator = new Mock<IItemFilterBlockTranslator>();
|
||||
mockItemFilterBlockTranslator.Setup(t => t.TranslateStringToItemFilterBlock(It.IsAny<string>())).Verifiable();
|
||||
|
||||
var translator = new ItemFilterScriptTranslator(mockItemFilterBlockTranslator.Object);
|
||||
|
||||
// Act
|
||||
var script = translator.TranslateStringToItemFilterScript(testInput);
|
||||
var script = _testUtility.ScriptTranslator.TranslateStringToItemFilterScript(testInput);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(expectedDescription, script.Description);
|
||||
@@ -62,9 +65,10 @@ namespace Filtration.Tests.Translators
|
||||
// Arrange
|
||||
var testInput = File.ReadAllText(@"Resources/ThioleItemFilter.txt");
|
||||
|
||||
|
||||
var BlockTranslator = new ItemFilterBlockTranslator();
|
||||
var translator = new ItemFilterScriptTranslator(BlockTranslator);
|
||||
|
||||
var mockBlockGroupHierarchyBuilder = new Mock<IBlockGroupHierarchyBuilder>();
|
||||
var blockTranslator = new ItemFilterBlockTranslator(mockBlockGroupHierarchyBuilder.Object);
|
||||
var translator = new ItemFilterScriptTranslator(blockTranslator, mockBlockGroupHierarchyBuilder.Object);
|
||||
|
||||
// Act
|
||||
var script = translator.TranslateStringToItemFilterScript(testInput);
|
||||
@@ -82,20 +86,17 @@ namespace Filtration.Tests.Translators
|
||||
testBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.Equal, 5));
|
||||
|
||||
var BlockOutput = "Test Script Output";
|
||||
var expectedOutput = "Test Script Output" + Environment.NewLine + Environment.NewLine;
|
||||
|
||||
testScript.ItemFilterBlocks.Add(testBlock);
|
||||
|
||||
var mockItemFilterBlockTranslator = new Mock<IItemFilterBlockTranslator>();
|
||||
mockItemFilterBlockTranslator.Setup(t => t.TranslateItemFilterBlockToString(testBlock)).Returns(BlockOutput).Verifiable();
|
||||
_testUtility.MockItemFilterBlockTranslator.Setup(t => t.TranslateItemFilterBlockToString(testBlock)).Returns(BlockOutput).Verifiable();
|
||||
|
||||
var translator = new ItemFilterScriptTranslator(mockItemFilterBlockTranslator.Object);
|
||||
|
||||
// Act
|
||||
var result = translator.TranslateItemFilterScriptToString(testScript);
|
||||
var result = _testUtility.ScriptTranslator.TranslateItemFilterScriptToString(testScript);
|
||||
|
||||
// Assert
|
||||
mockItemFilterBlockTranslator.Verify();
|
||||
_testUtility.MockItemFilterBlockTranslator.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -132,8 +133,9 @@ namespace Filtration.Tests.Translators
|
||||
" Width = 3" + Environment.NewLine +
|
||||
" SetFontSize 7" + Environment.NewLine + Environment.NewLine;
|
||||
|
||||
var blockTranslator = new ItemFilterBlockTranslator();
|
||||
var translator = new ItemFilterScriptTranslator(blockTranslator);
|
||||
var mockBlockGroupHierarchyBuilder = new Mock<IBlockGroupHierarchyBuilder>();
|
||||
var blockTranslator = new ItemFilterBlockTranslator(mockBlockGroupHierarchyBuilder.Object);
|
||||
var translator = new ItemFilterScriptTranslator(blockTranslator, mockBlockGroupHierarchyBuilder.Object);
|
||||
|
||||
// Act
|
||||
var result = translator.TranslateItemFilterScriptToString(script);
|
||||
@@ -155,11 +157,8 @@ namespace Filtration.Tests.Translators
|
||||
Environment.NewLine +
|
||||
"# Test script description" + Environment.NewLine + Environment.NewLine;
|
||||
|
||||
var blockTranslator = new ItemFilterBlockTranslator();
|
||||
var translator = new ItemFilterScriptTranslator(blockTranslator);
|
||||
|
||||
// Act
|
||||
var result = translator.TranslateItemFilterScriptToString(script);
|
||||
var result = _testUtility.ScriptTranslator.TranslateItemFilterScriptToString(script);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(expectedOutput, result);
|
||||
@@ -177,8 +176,8 @@ namespace Filtration.Tests.Translators
|
||||
" SetBorderColor 255 0 255" + Environment.NewLine +
|
||||
" SetFontSize 25";
|
||||
|
||||
var blockTranslator = new ItemFilterBlockTranslator();
|
||||
var translator = new ItemFilterScriptTranslator(blockTranslator);
|
||||
var blockTranslator = new ItemFilterBlockTranslator(_testUtility.MockBlockGroupHierarchyBuilder.Object);
|
||||
var translator = new ItemFilterScriptTranslator(blockTranslator, _testUtility.MockBlockGroupHierarchyBuilder.Object);
|
||||
|
||||
// Act
|
||||
var result = translator.TranslateStringToItemFilterScript(testInputScript);
|
||||
@@ -191,5 +190,22 @@ namespace Filtration.Tests.Translators
|
||||
Assert.AreEqual(2, baseTypeItem.Items.Count);
|
||||
|
||||
}
|
||||
|
||||
private class ItemFilterScriptTranslatorTestUtility
|
||||
{
|
||||
public ItemFilterScriptTranslatorTestUtility()
|
||||
{
|
||||
// Mock setups
|
||||
MockItemFilterBlockTranslator = new Mock<IItemFilterBlockTranslator>();
|
||||
MockBlockGroupHierarchyBuilder = new Mock<IBlockGroupHierarchyBuilder>();
|
||||
|
||||
// Class under test instantiation
|
||||
ScriptTranslator = new ItemFilterScriptTranslator(MockItemFilterBlockTranslator.Object, MockBlockGroupHierarchyBuilder.Object);
|
||||
}
|
||||
|
||||
public ItemFilterScriptTranslator ScriptTranslator { get; private set; }
|
||||
public Mock<IItemFilterBlockTranslator> MockItemFilterBlockTranslator { get; private set; }
|
||||
public Mock<IBlockGroupHierarchyBuilder> MockBlockGroupHierarchyBuilder { get; private set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user