Add tests and fix theme bug

This commit is contained in:
azakhi 2018-08-31 16:02:17 +03:00
parent 3851ad51e1
commit 6be29dbd28
2 changed files with 71 additions and 23 deletions

View File

@ -405,6 +405,24 @@ namespace Filtration.Parser.Tests.Services
Assert.IsTrue(blockItem.BooleanValue); Assert.IsTrue(blockItem.BooleanValue);
} }
[Test]
public void TranslateStringToItemFilterBlock_MapTier_ReturnsCorrectObject()
{
// Arrange
var inputString = "Show" + Environment.NewLine +
" MapTier >= 15";
// Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is MapTierBlockItem));
var blockItem = result.BlockItems.OfType<MapTierBlockItem>().First();
Assert.AreEqual(15, blockItem.FilterPredicate.PredicateOperand);
Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, blockItem.FilterPredicate.PredicateOperator);
}
[Test] [Test]
public void TranslateStringToItemFilterBlock_ShapedMap_ReturnsCorrectObject() public void TranslateStringToItemFilterBlock_ShapedMap_ReturnsCorrectObject()
{ {
@ -925,7 +943,10 @@ namespace Filtration.Parser.Tests.Services
" SetBorderColor 0 0 0" + Environment.NewLine + " SetBorderColor 0 0 0" + Environment.NewLine +
" SetFontSize 50" + Environment.NewLine + " SetFontSize 50" + Environment.NewLine +
" PlayAlertSound 3" + Environment.NewLine + " PlayAlertSound 3" + Environment.NewLine +
" DisableDropSound False" + Environment.NewLine; " DisableDropSound False" + Environment.NewLine +
" CustomAlertSound \"test.mp3\" # customSoundTheme" + Environment.NewLine +
" MinimapIcon 2 Green Triangle # iconTheme" + Environment.NewLine +
" PlayEffect Green Temp # effectTheme" + Environment.NewLine;
// Act // Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
@ -1024,12 +1045,40 @@ namespace Filtration.Parser.Tests.Services
var fontSizeblockItem = result.BlockItems.OfType<FontSizeBlockItem>().First(); var fontSizeblockItem = result.BlockItems.OfType<FontSizeBlockItem>().First();
Assert.AreEqual(50, fontSizeblockItem.Value); Assert.AreEqual(50, fontSizeblockItem.Value);
var soundblockItem = result.BlockItems.OfType<SoundBlockItem>().First(); Assert.AreEqual(0, result.BlockItems.OfType<SoundBlockItem>().Count());
Assert.AreEqual("3", soundblockItem.Value);
Assert.AreEqual(79, soundblockItem.SecondValue);
var disableDropSoundBlockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First(); var disableDropSoundBlockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First();
Assert.IsFalse(disableDropSoundBlockItem.BooleanValue); Assert.IsFalse(disableDropSoundBlockItem.BooleanValue);
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
Assert.AreEqual("test.mp3", customSoundBlockItem.Value);
Assert.AreNotEqual(null, customSoundBlockItem.ThemeComponent);
Assert.AreEqual(ThemeComponentType.CustomSound, customSoundBlockItem.ThemeComponent.ComponentType);
Assert.AreEqual("customSoundTheme", customSoundBlockItem.ThemeComponent.ComponentName);
Assert.AreEqual(typeof(StringThemeComponent), customSoundBlockItem.ThemeComponent.GetType());
Assert.AreEqual("test.mp3", ((StringThemeComponent)customSoundBlockItem.ThemeComponent).Value);
var mapIconBlockItem = result.BlockItems.OfType<MapIconBlockItem>().First();
Assert.AreEqual(IconSize.Small, mapIconBlockItem.Size);
Assert.AreEqual(IconColor.Green, mapIconBlockItem.Color);
Assert.AreEqual(IconShape.Triangle, mapIconBlockItem.Shape);
Assert.AreNotEqual(null, mapIconBlockItem.ThemeComponent);
Assert.AreEqual(ThemeComponentType.Icon, mapIconBlockItem.ThemeComponent.ComponentType);
Assert.AreEqual("iconTheme", mapIconBlockItem.ThemeComponent.ComponentName);
Assert.AreEqual(typeof(IconThemeComponent), mapIconBlockItem.ThemeComponent.GetType());
Assert.AreEqual(IconSize.Small, ((IconThemeComponent)mapIconBlockItem.ThemeComponent).IconSize);
Assert.AreEqual(IconColor.Green, ((IconThemeComponent)mapIconBlockItem.ThemeComponent).IconColor);
Assert.AreEqual(IconShape.Triangle, ((IconThemeComponent)mapIconBlockItem.ThemeComponent).IconShape);
var effectColorBlockItem = result.BlockItems.OfType<EffectColorBlockItem>().First();
Assert.AreEqual(EffectColor.Green, effectColorBlockItem.Color);
Assert.IsTrue(effectColorBlockItem.Temporary);
Assert.AreNotEqual(null, effectColorBlockItem.ThemeComponent);
Assert.AreEqual(ThemeComponentType.Effect, effectColorBlockItem.ThemeComponent.ComponentType);
Assert.AreEqual("effectTheme", effectColorBlockItem.ThemeComponent.ComponentName);
Assert.AreEqual(typeof(EffectColorThemeComponent), effectColorBlockItem.ThemeComponent.GetType());
Assert.AreEqual(EffectColor.Green, ((EffectColorThemeComponent)effectColorBlockItem.ThemeComponent).EffectColor);
Assert.IsTrue(((EffectColorThemeComponent)effectColorBlockItem.ThemeComponent).Temporary);
} }
[Test] [Test]

View File

@ -86,8 +86,7 @@ namespace Filtration.Parser.Services
var fullLine = line.Trim(); var fullLine = line.Trim();
var trimmedLine = fullLine; var trimmedLine = fullLine;
var blockComment = ""; var blockComment = "";
var nextBlockIndex = block.BlockItems.Count; var themeComponentType = -1;
ThemeComponentType themeComponentType = ThemeComponentType.AlertSound;
if(trimmedLine.IndexOf('#') > 0) if(trimmedLine.IndexOf('#') > 0)
{ {
blockComment = trimmedLine.Substring(trimmedLine.IndexOf('#') + 1); blockComment = trimmedLine.Substring(trimmedLine.IndexOf('#') + 1);
@ -221,7 +220,7 @@ namespace Filtration.Parser.Services
var blockItem = new TextColorBlockItem(); var blockItem = new TextColorBlockItem();
blockItem.Color = GetColorFromString(result[0].Groups[1].Value); blockItem.Color = GetColorFromString(result[0].Groups[1].Value);
block.BlockItems.Add(blockItem); block.BlockItems.Add(blockItem);
themeComponentType = ThemeComponentType.TextColor; themeComponentType = (int)ThemeComponentType.TextColor;
break; break;
} }
case "SetBackgroundColor": case "SetBackgroundColor":
@ -234,7 +233,7 @@ namespace Filtration.Parser.Services
var blockItem = new BackgroundColorBlockItem(); var blockItem = new BackgroundColorBlockItem();
blockItem.Color = GetColorFromString(result[0].Groups[1].Value); blockItem.Color = GetColorFromString(result[0].Groups[1].Value);
block.BlockItems.Add(blockItem); block.BlockItems.Add(blockItem);
themeComponentType = ThemeComponentType.BackgroundColor; themeComponentType = (int)ThemeComponentType.BackgroundColor;
break; break;
} }
case "SetBorderColor": case "SetBorderColor":
@ -247,7 +246,7 @@ namespace Filtration.Parser.Services
var blockItem = new BorderColorBlockItem(); var blockItem = new BorderColorBlockItem();
blockItem.Color = GetColorFromString(result[0].Groups[1].Value); blockItem.Color = GetColorFromString(result[0].Groups[1].Value);
block.BlockItems.Add(blockItem); block.BlockItems.Add(blockItem);
themeComponentType = ThemeComponentType.BorderColor; themeComponentType = (int)ThemeComponentType.BorderColor;
break; break;
} }
case "SetFontSize": case "SetFontSize":
@ -260,8 +259,8 @@ namespace Filtration.Parser.Services
{ {
var blockItem = new FontSizeBlockItem(Convert.ToInt16(match[0].Groups[2].Value)); var blockItem = new FontSizeBlockItem(Convert.ToInt16(match[0].Groups[2].Value));
block.BlockItems.Add(blockItem); block.BlockItems.Add(blockItem);
themeComponentType = (int)ThemeComponentType.FontSize;
} }
themeComponentType = ThemeComponentType.FontSize;
break; break;
} }
case "PlayAlertSound": case "PlayAlertSound":
@ -306,8 +305,8 @@ namespace Filtration.Parser.Services
}; };
block.BlockItems.Add(blockItemValue); block.BlockItems.Add(blockItemValue);
} }
themeComponentType = (int)ThemeComponentType.AlertSound;
} }
themeComponentType = ThemeComponentType.AlertSound;
break; break;
} }
case "GemLevel": case "GemLevel":
@ -364,8 +363,8 @@ namespace Filtration.Parser.Services
blockItemValue.ThemeComponent = themeComponent; blockItemValue.ThemeComponent = themeComponent;
} }
block.BlockItems.Add(blockItemValue); block.BlockItems.Add(blockItemValue);
themeComponentType = (int)ThemeComponentType.Icon;
} }
themeComponentType = ThemeComponentType.Icon;
break; break;
} }
case "PlayEffect": case "PlayEffect":
@ -384,8 +383,8 @@ namespace Filtration.Parser.Services
Temporary = match.Groups[2].Value.Trim().ToLower() == "temp" Temporary = match.Groups[2].Value.Trim().ToLower() == "temp"
}; };
block.BlockItems.Add(blockItemValue); block.BlockItems.Add(blockItemValue);
themeComponentType = (int)ThemeComponentType.Effect;
} }
themeComponentType = ThemeComponentType.Effect;
break; break;
} }
case "CustomAlertSound": case "CustomAlertSound":
@ -404,8 +403,8 @@ namespace Filtration.Parser.Services
Value = match.Groups[1].Value Value = match.Groups[1].Value
}; };
block.BlockItems.Add(blockItemValue); block.BlockItems.Add(blockItemValue);
themeComponentType = (int)ThemeComponentType.CustomSound;
} }
themeComponentType = ThemeComponentType.CustomSound;
break; break;
} }
case "MapTier": case "MapTier":
@ -422,9 +421,9 @@ namespace Filtration.Parser.Services
{ {
block.BlockItems.Last().Comment = blockComment; block.BlockItems.Last().Comment = blockComment;
} }
else if(nextBlockIndex == block.BlockItems.Count - 1) // If these 2 are not equal, this theme doesn't belong to last block else
{ {
switch(themeComponentType) switch((ThemeComponentType)themeComponentType)
{ {
case ThemeComponentType.AlertSound: case ThemeComponentType.AlertSound:
{ {