Add tests and small bugfixes

This commit is contained in:
azakhi 2018-08-10 17:08:17 +03:00
parent 0fd2db7076
commit 71b7a45f84
4 changed files with 152 additions and 1 deletions

View File

@ -1,10 +1,20 @@
using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes
{
public class GemLevelBlockItem : NumericFilterPredicateBlockItem
{
public GemLevelBlockItem()
{
}
public GemLevelBlockItem(FilterPredicateOperator predicateOperator, int predicateOperand)
: base(predicateOperator, predicateOperand)
{
}
public override string PrefixText => "GemLevel";
public override int MaximumAllowed => 2;
public override string DisplayHeading => "Gem Level";

View File

@ -1,10 +1,20 @@
using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes
{
public class StackSizeBlockItem : NumericFilterPredicateBlockItem
{
public StackSizeBlockItem()
{
}
public StackSizeBlockItem(FilterPredicateOperator predicateOperator, int predicateOperand)
: base(predicateOperator, predicateOperand)
{
}
public override string PrefixText => "StackSize";
public override int MaximumAllowed => 2;
public override string DisplayHeading => "Stack Size";

View File

@ -318,6 +318,42 @@ namespace Filtration.Parser.Tests.Services
Assert.AreEqual(FilterPredicateOperator.Equal, blockItem.FilterPredicate.PredicateOperator);
}
[Test]
public void TranslateStringToItemFilterBlock_GemLevel_ReturnsCorrectObject()
{
// Arrange
var inputString = "Show" + Environment.NewLine +
" GemLevel = 20";
// Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is GemLevelBlockItem));
var blockItem = result.BlockItems.OfType<GemLevelBlockItem>().First();
Assert.AreEqual(20, blockItem.FilterPredicate.PredicateOperand);
Assert.AreEqual(FilterPredicateOperator.Equal, blockItem.FilterPredicate.PredicateOperator);
}
[Test]
public void TranslateStringToItemFilterBlock_StackSize_ReturnsCorrectObject()
{
// Arrange
var inputString = "Show" + Environment.NewLine +
" StackSize > 5";
// Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is StackSizeBlockItem));
var blockItem = result.BlockItems.OfType<StackSizeBlockItem>().First();
Assert.AreEqual(5, blockItem.FilterPredicate.PredicateOperand);
Assert.AreEqual(FilterPredicateOperator.GreaterThan, blockItem.FilterPredicate.PredicateOperator);
}
[Test]
public void TranslateStringToItemFilterBlock_Corrupted_ReturnsCorrectObject()
{
@ -494,6 +530,25 @@ namespace Filtration.Parser.Tests.Services
Assert.Contains("Test BaseType 2", blockItem.Items);
}
[Test]
public void TranslateStringToItemFilterBlock_HasExplicitMod_ReturnsCorrectObject()
{
// Arrange
var inputString = "Show" + Environment.NewLine +
@" HasExplicitMod ""Test Mod 1"" ""TestOneWordModInQuotes"" TestOneWordModNotInQuotes ""Test Mod 2""";
// Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is BaseTypeBlockItem));
var blockItem = result.BlockItems.OfType<BaseTypeBlockItem>().First();
Assert.Contains("Test Mod 1", blockItem.Items);
Assert.Contains("TestOneWordModInQuotes", blockItem.Items);
Assert.Contains("TestOneWordModNotInQuotes", blockItem.Items);
Assert.Contains("Test Mod 2", blockItem.Items);
}
[Test]
public void TranslateStringToItemFilterBlock_Sockets_ReturnsCorrectObject()
{
@ -813,6 +868,8 @@ namespace Filtration.Parser.Tests.Services
"Show" + Environment.NewLine +
" ItemLevel >= 50" + Environment.NewLine +
" DropLevel < 70" + Environment.NewLine +
" GemLevel = 20" + Environment.NewLine +
" StackSize > 2" + Environment.NewLine +
" Quality = 15" + Environment.NewLine +
" Rarity <= Unique" + Environment.NewLine +
" Identified True" + Environment.NewLine +
@ -822,6 +879,7 @@ namespace Filtration.Parser.Tests.Services
" ShapedMap TRUE" + Environment.NewLine +
@" Class ""My Item Class"" AnotherClass ""AndAnotherClass""" + Environment.NewLine +
@" BaseType MyBaseType ""Another BaseType""" + Environment.NewLine +
@" HasExplicitMod MyMod ""Another Mod""" + Environment.NewLine +
" JunkLine Let's ignore this one!" + Environment.NewLine +
" #Quality Commented out quality line" + Environment.NewLine +
" Sockets >= 3" + Environment.NewLine +
@ -861,6 +919,14 @@ namespace Filtration.Parser.Tests.Services
Assert.AreEqual(FilterPredicateOperator.LessThan, dropLevelblockItem.FilterPredicate.PredicateOperator);
Assert.AreEqual(70, dropLevelblockItem.FilterPredicate.PredicateOperand);
var gemLevelBlockItem = result.BlockItems.OfType<GemLevelBlockItem>().First();
Assert.AreEqual(FilterPredicateOperator.Equal, gemLevelBlockItem.FilterPredicate.PredicateOperator);
Assert.AreEqual(20, gemLevelBlockItem.FilterPredicate.PredicateOperand);
var stackSizeBlockItem = result.BlockItems.OfType<StackSizeBlockItem>().First();
Assert.AreEqual(FilterPredicateOperator.GreaterThan, stackSizeBlockItem.FilterPredicate.PredicateOperator);
Assert.AreEqual(2, stackSizeBlockItem.FilterPredicate.PredicateOperand);
var qualityblockItem = result.BlockItems.OfType<QualityBlockItem>().First();
Assert.AreEqual(FilterPredicateOperator.Equal, qualityblockItem.FilterPredicate.PredicateOperator);
Assert.AreEqual(15, qualityblockItem.FilterPredicate.PredicateOperand);
@ -880,6 +946,11 @@ namespace Filtration.Parser.Tests.Services
Assert.Contains("MyBaseType", baseTypeblockItem.Items);
Assert.Contains("Another BaseType", baseTypeblockItem.Items);
var hasExplicitModBlockItem = result.BlockItems.OfType<HasExplicitModBlockItem>().First();
Assert.AreEqual(2, hasExplicitModBlockItem.Items.Count);
Assert.Contains("MyMod", hasExplicitModBlockItem.Items);
Assert.Contains("Another Mod", hasExplicitModBlockItem.Items);
var socketsblockItem = result.BlockItems.OfType<SocketsBlockItem>().First();
Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, socketsblockItem.FilterPredicate.PredicateOperator);
Assert.AreEqual(3, socketsblockItem.FilterPredicate.PredicateOperand);
@ -1334,6 +1405,38 @@ namespace Filtration.Parser.Tests.Services
Assert.AreEqual(expectedResult, result);
}
[Test]
public void TranslateItemFilterBlockToString_GemLevel_ReturnsCorrectString()
{
// Arrange
var expectedResult = "Show" + Environment.NewLine +
" GemLevel <= 15";
_testUtility.TestBlock.BlockItems.Add(new GemLevelBlockItem(FilterPredicateOperator.LessThanOrEqual, 15));
// Act
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
// Assert
Assert.AreEqual(expectedResult, result);
}
[Test]
public void TranslateItemFilterBlockToString_StackSize_ReturnsCorrectString()
{
// Arrange
var expectedResult = "Show" + Environment.NewLine +
" StackSize = 5";
_testUtility.TestBlock.BlockItems.Add(new StackSizeBlockItem(FilterPredicateOperator.Equal, 5));
// Act
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
// Assert
Assert.AreEqual(expectedResult, result);
}
[Test]
public void TranslateItemFilterBlockToString_Quality_ReturnsCorrectString()
{
@ -1425,6 +1528,26 @@ namespace Filtration.Parser.Tests.Services
Assert.AreEqual(expectedResult, result);
}
[Test]
public void TranslateItemFilterBlockToString_HasExplicitMod_ReturnsCorrectString()
{
// Arrange
var expectedResult = "Show" + Environment.NewLine +
" HasExplicitMod \"Test Mod\" \"Another Mod\" \"Yet Another Mod\"";
var hasExplicitModBlockItem = new HasExplicitModBlockItem();
hasExplicitModBlockItem.Items.Add("Test Mod");
hasExplicitModBlockItem.Items.Add("Another Mod");
hasExplicitModBlockItem.Items.Add("Yet Another Mod");
_testUtility.TestBlock.BlockItems.Add(hasExplicitModBlockItem);
// Act
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
// Assert
Assert.AreEqual(expectedResult, result);
}
[Test]
public void TranslateItemFilterBlockToString_Sockets_ReturnsCorrectString()
{
@ -1706,9 +1829,12 @@ namespace Filtration.Parser.Tests.Services
" ItemLevel > 70" + Environment.NewLine +
" ItemLevel <= 85" + Environment.NewLine +
" DropLevel > 56" + Environment.NewLine +
" GemLevel < 15" + Environment.NewLine +
" StackSize >= 4" + Environment.NewLine +
" Rarity = Unique" + Environment.NewLine +
" Class \"Body Armour\" \"Gloves\" \"Belt\" \"Two Hand Axes\"" + Environment.NewLine +
" BaseType \"Greater Life Flask\" \"Simple Robe\" \"Full Wyrmscale\"" + Environment.NewLine +
" HasExplicitMod \"Guatelitzi's\" \"of Tacati\" \"Tyrannical\"" + Environment.NewLine +
" SetTextColor 255 89 0 56" + Environment.NewLine +
" SetBackgroundColor 0 0 0" + Environment.NewLine +
" SetBorderColor 255 1 254" + Environment.NewLine +
@ -1735,6 +1861,11 @@ namespace Filtration.Parser.Tests.Services
baseTypeItemblockItem.Items.Add("Simple Robe");
baseTypeItemblockItem.Items.Add("Full Wyrmscale");
_testUtility.TestBlock.BlockItems.Add(baseTypeItemblockItem);
var hasExplicitModBlockItem = new HasExplicitModBlockItem();
hasExplicitModBlockItem.Items.Add("Guatelitzi's");
hasExplicitModBlockItem.Items.Add("of Tacati");
hasExplicitModBlockItem.Items.Add("Tyrannical");
_testUtility.TestBlock.BlockItems.Add(hasExplicitModBlockItem);
_testUtility.TestBlock.BlockItems.Add(new SocketsBlockItem(FilterPredicateOperator.LessThanOrEqual, 6));
_testUtility.TestBlock.BlockItems.Add(new LinkedSocketsBlockItem(FilterPredicateOperator.GreaterThanOrEqual, 4));
_testUtility.TestBlock.BlockItems.Add(new WidthBlockItem(FilterPredicateOperator.Equal, 3));

View File

@ -234,7 +234,7 @@ namespace Filtration.Parser.Services
var outputString = string.Empty;
outputString += "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" +
Environment.NewLine;
Environment.NewLine + Environment.NewLine;
if (script.ItemFilterScriptSettings.BlockGroupsEnabled)
{