From af08cdfed6d6d81b89d2a58c53afa6ff46fd4316 Mon Sep 17 00:00:00 2001 From: Ben Wallis Date: Thu, 1 Sep 2016 20:56:58 +0100 Subject: [PATCH] Fixed #32 - PlayAlertSound ignored on Paste Block Style --- .../Services/IItemFilterBlockTranslator.cs | 2 +- .../Services/TestItemFilterBlockTranslator.cs | 78 ++++++++++++++----- .../Services/ItemFilterBlockTranslator.cs | 9 ++- .../ViewModels/ItemFilterScriptViewModel.cs | 2 +- 4 files changed, 67 insertions(+), 24 deletions(-) diff --git a/Filtration.Parser.Interface/Services/IItemFilterBlockTranslator.cs b/Filtration.Parser.Interface/Services/IItemFilterBlockTranslator.cs index c17fcec..59d923e 100644 --- a/Filtration.Parser.Interface/Services/IItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Interface/Services/IItemFilterBlockTranslator.cs @@ -9,6 +9,6 @@ namespace Filtration.Parser.Interface.Services IItemFilterBlock TranslateStringToItemFilterBlock(string inputString, ThemeComponentCollection masterComponentCollection); string TranslateItemFilterBlockToString(IItemFilterBlock block); - void ReplaceColorBlockItemsFromString(ObservableCollection blockItems, string inputString); + void ReplaceAudioVisualBlockItemsFromString(ObservableCollection blockItems, string inputString); } } \ No newline at end of file diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index f0a8f7f..16040ff 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs @@ -1472,7 +1472,7 @@ namespace Filtration.Parser.Tests.Services } [Test] - public void ReplaceColorBlockItemsFromString_SingleLine_ReplacesColorBlock() + public void ReplaceAudioVisualBlockItemsFromString_SingleLine_ReplacesColorBlock() { // Arrange var testInputString = "SetTextColor 240 200 150 # Rarest Currency"; @@ -1482,7 +1482,7 @@ namespace Filtration.Parser.Tests.Services testInputBlockItems.Add(testInputBlockItem); // Act - _testUtility.Translator.ReplaceColorBlockItemsFromString(testInputBlockItems, testInputString); + _testUtility.Translator.ReplaceAudioVisualBlockItemsFromString(testInputBlockItems, testInputString); // Assert var textColorBlockItem = testInputBlockItems.First(b => b is TextColorBlockItem) as TextColorBlockItem; @@ -1492,7 +1492,28 @@ namespace Filtration.Parser.Tests.Services } [Test] - public void ReplaceColorBlockItemsFromString_SingleLine_ReplacesColorBlockBugTest() + public void ReplaceAudioVisualBlockItemsFromString_SingleLine_ReplacesSoundBlockItem() + { + // Arrange + var testInputString = "PlayAlertSound 7 280"; + + var testInputBlockItems = new ObservableCollection(); + var testInputBlockItem = new SoundBlockItem(12,30); + testInputBlockItems.Add(testInputBlockItem); + + // Act + _testUtility.Translator.ReplaceAudioVisualBlockItemsFromString(testInputBlockItems, testInputString); + + // Assert + var soundBlockItem = testInputBlockItems.First(b => b is SoundBlockItem) as SoundBlockItem; + Assert.IsNotNull(soundBlockItem); + Assert.AreNotSame(testInputBlockItem, soundBlockItem); + Assert.AreEqual(7, soundBlockItem.Value); + Assert.AreEqual(280, soundBlockItem.SecondValue); + } + + [Test] + public void ReplaceAudioVisualBlockItemsFromString_SingleLine_ReplacesColorBlockBugTest() { // Arrange var testInputString = "SetBackgroundColor 70 0 0 255"; @@ -1502,7 +1523,7 @@ namespace Filtration.Parser.Tests.Services testInputBlockItems.Add(testInputBlockItem); // Act - _testUtility.Translator.ReplaceColorBlockItemsFromString(testInputBlockItems, testInputString); + _testUtility.Translator.ReplaceAudioVisualBlockItemsFromString(testInputBlockItems, testInputString); // Assert var backgroundColorBlockItem = testInputBlockItems.First(b => b is BackgroundColorBlockItem) as BackgroundColorBlockItem; @@ -1513,7 +1534,7 @@ namespace Filtration.Parser.Tests.Services [Ignore("Not currently possible - will not be necessary once commanding (to enable undo history) is implemented anyway")] [Test] - public void ReplaceColorBlockItemsFromString_MalformedLine_DoesNothing() + public void ReplaceAudioVisualBlockItemsFromString_MalformedLine_DoesNothing() { // Arrange var testInputString = "SetTextCsaolor 240 200 150 # Rarest Currency"; @@ -1523,7 +1544,7 @@ namespace Filtration.Parser.Tests.Services testInputBlockItems.Add(testInputBlockItem); // Act - _testUtility.Translator.ReplaceColorBlockItemsFromString(testInputBlockItems, testInputString); + _testUtility.Translator.ReplaceAudioVisualBlockItemsFromString(testInputBlockItems, testInputString); // Assert var textColorBlockItem = testInputBlockItems.First(b => b is TextColorBlockItem) as TextColorBlockItem; @@ -1532,23 +1553,27 @@ namespace Filtration.Parser.Tests.Services } [Test] - public void ReplaceColorBlockItemsFromString_MultipleLines_ExistingBlockItems() + public void ReplaceAudioVisualBlockItemsFromString_MultipleLines_ExistingBlockItems() { // Arrange var testInputString = "SetTextColor 240 200 150 # Rarest Currency" + Environment.NewLine + "SetBackgroundColor 0 0 0 # Rarest Currency Background" + Environment.NewLine + - "SetBorderColor 255 255 255 # Rarest Currency Border"; + "SetBorderColor 255 255 255 # Rarest Currency Border" + Environment.NewLine + + "PlayAlertSound 7 280"; var testInputBlockItems = new ObservableCollection(); var testInputTextColorBlockItem = new TextColorBlockItem(Colors.Red); var testInputBackgroundColorBlockItem = new BackgroundColorBlockItem(Colors.Blue); - var testInpuBorderColorBlockItem = new BorderColorBlockItem(Colors.Yellow); + var testInputBorderColorBlockItem = new BorderColorBlockItem(Colors.Yellow); + var testInputSoundBlockItem = new SoundBlockItem(1, 1); + testInputBlockItems.Add(testInputTextColorBlockItem); testInputBlockItems.Add(testInputBackgroundColorBlockItem); - testInputBlockItems.Add(testInpuBorderColorBlockItem); + testInputBlockItems.Add(testInputBorderColorBlockItem); + testInputBlockItems.Add(testInputSoundBlockItem); // Act - _testUtility.Translator.ReplaceColorBlockItemsFromString(testInputBlockItems, testInputString); + _testUtility.Translator.ReplaceAudioVisualBlockItemsFromString(testInputBlockItems, testInputString); // Assert var textColorBlockItem = testInputBlockItems.First(b => b is TextColorBlockItem) as TextColorBlockItem; @@ -1563,23 +1588,29 @@ namespace Filtration.Parser.Tests.Services var borderColorBlockItem = testInputBlockItems.First(b => b is BorderColorBlockItem) as BorderColorBlockItem; Assert.IsNotNull(borderColorBlockItem); - Assert.AreNotSame(testInpuBorderColorBlockItem, borderColorBlockItem); + Assert.AreNotSame(testInputBorderColorBlockItem, borderColorBlockItem); Assert.AreEqual(new Color { A = 255, R = 255, G = 255, B = 255 }, borderColorBlockItem.Color); + + var soundBlockItem = testInputBlockItems.First(b => b is SoundBlockItem) as SoundBlockItem; + Assert.IsNotNull(soundBlockItem); + Assert.AreNotSame(testInputSoundBlockItem, soundBlockItem); + Assert.AreEqual(7, soundBlockItem.Value); + Assert.AreEqual(280, soundBlockItem.SecondValue); } [Test] - public void ReplaceColorBlockItemsFromString_MultipleLines_NoExistingBlockItems() + public void ReplaceAudioVisualBlockItemsFromString_MultipleLines_NoExistingBlockItems() { // Arrange var testInputString = "SetTextColor 240 200 150 # Rarest Currency" + Environment.NewLine + "SetBackgroundColor 0 0 0 # Rarest Currency Background" + Environment.NewLine + - "SetBorderColor 255 255 255 # Rarest Currency Border"; - - + "SetBorderColor 255 255 255 # Rarest Currency Border" + Environment.NewLine + + "PlayAlertSound 7 280"; + var testInputBlockItems = new ObservableCollection(); // Act - _testUtility.Translator.ReplaceColorBlockItemsFromString(testInputBlockItems, testInputString); + _testUtility.Translator.ReplaceAudioVisualBlockItemsFromString(testInputBlockItems, testInputString); // Assert var textColorBlockItem = testInputBlockItems.First(b => b is TextColorBlockItem) as TextColorBlockItem; @@ -1593,10 +1624,15 @@ namespace Filtration.Parser.Tests.Services var borderColorBlockItem = testInputBlockItems.First(b => b is BorderColorBlockItem) as BorderColorBlockItem; Assert.IsNotNull(borderColorBlockItem); Assert.AreEqual(new Color { A = 255, R = 255, G = 255, B = 255 }, borderColorBlockItem.Color); + + var soundBlockItem = testInputBlockItems.First(b => b is SoundBlockItem) as SoundBlockItem; + Assert.IsNotNull(soundBlockItem); + Assert.AreEqual(7, soundBlockItem.Value); + Assert.AreEqual(280, soundBlockItem.SecondValue); } [Test] - public void ReplaceColorBlockItemsFromString_MultipleLines_SomeExistingBlockItems() + public void ReplaceAudioVisualBlockItemsFromString_MultipleLines_SomeExistingBlockItems() { // Arrange var testInputString = "SetTextColor 240 200 150 # Rarest Currency" + Environment.NewLine + @@ -1611,7 +1647,7 @@ namespace Filtration.Parser.Tests.Services testInputBlockItems.Add(testInpuBorderColorBlockItem); // Act - _testUtility.Translator.ReplaceColorBlockItemsFromString(testInputBlockItems, testInputString); + _testUtility.Translator.ReplaceAudioVisualBlockItemsFromString(testInputBlockItems, testInputString); // Assert var textColorBlockItem = testInputBlockItems.First(b => b is TextColorBlockItem) as TextColorBlockItem; @@ -1627,7 +1663,7 @@ namespace Filtration.Parser.Tests.Services [Ignore("ThemeComponentBuilder deprecated")] [Test] - public void ReplaceColorBlockItemsFromString_ThemeComponentBuilderNotInitialised_DoesNotCallAddComponent() + public void ReplaceAudioVisualBlockItemsFromString_ThemeComponentBuilderNotInitialised_DoesNotCallAddComponent() { // Arrange var testInputString = "SetTextColor 240 200 150 # Rarest Currency"; @@ -1637,7 +1673,7 @@ namespace Filtration.Parser.Tests.Services testInputBlockItems.Add(testInputBlockItem); // Act - _testUtility.Translator.ReplaceColorBlockItemsFromString(testInputBlockItems, testInputString); + _testUtility.Translator.ReplaceAudioVisualBlockItemsFromString(testInputBlockItems, testInputString); // Assert diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index 2bcf2b1..3ce3570 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -318,7 +318,7 @@ namespace Filtration.Parser.Services return blockItem; } - public void ReplaceColorBlockItemsFromString(ObservableCollection blockItems, string inputString) + public void ReplaceAudioVisualBlockItemsFromString(ObservableCollection blockItems, string inputString) { // Reverse iterate to remove existing IAudioVisualBlockItems for (var idx = blockItems.Count - 1; idx >= 0; idx--) @@ -335,6 +335,13 @@ namespace Filtration.Parser.Services switch (matches.Value) { + case "PlayAlertSound": + { + var match = Regex.Match(line, @"\s+(\d+) (\d+)"); + if (!match.Success) break; + blockItems.Add(new SoundBlockItem(Convert.ToInt16(match.Groups[1].Value), Convert.ToInt16(match.Groups[2].Value))); + break; + } case "SetTextColor": { blockItems.Add(GetColorBlockItemFromString(line)); diff --git a/Filtration/ViewModels/ItemFilterScriptViewModel.cs b/Filtration/ViewModels/ItemFilterScriptViewModel.cs index af5a2b4..3aa590a 100644 --- a/Filtration/ViewModels/ItemFilterScriptViewModel.cs +++ b/Filtration/ViewModels/ItemFilterScriptViewModel.cs @@ -605,7 +605,7 @@ namespace Filtration.ViewModels return; } - _blockTranslator.ReplaceColorBlockItemsFromString(targetBlockViewModel.Block.BlockItems, clipboardText); + _blockTranslator.ReplaceAudioVisualBlockItemsFromString(targetBlockViewModel.Block.BlockItems, clipboardText); targetBlockViewModel.RefreshBlockPreview(); }