Fix for line description being lost when reading disabled blocks
This commit is contained in:
		
							parent
							
								
									9fcb609a51
								
							
						
					
					
						commit
						56e163e3e0
					
				| @ -323,7 +323,34 @@ namespace Filtration.Tests.Translators | ||||
|             Assert.AreEqual(3, firstBlock.BlockItems.Count); | ||||
|             Assert.AreEqual(5, secondBlock.BlockItems.Count); | ||||
|             Assert.AreEqual(3, thirdBlock.BlockItems.Count); | ||||
|         } | ||||
| 
 | ||||
|         [Test] | ||||
|         public void TranslateStringToItemFilterScript_DisabledBlock_BlockDescriptionNotLost() | ||||
|         { | ||||
|             // Arrange | ||||
|             var testInputScript = "Show" + Environment.NewLine + | ||||
|                                   "    ItemLevel > 2" + Environment.NewLine + | ||||
|                                   "    SetTextColor 255 40 0" + Environment.NewLine + | ||||
|                                   Environment.NewLine + | ||||
|                                   "#Disabled Block Start" + Environment.NewLine + | ||||
|                                   "# This is a disabled block" + Environment.NewLine + | ||||
|                                   "#Show" + Environment.NewLine + | ||||
|                                   "#    ItemLevel > 2" + Environment.NewLine + | ||||
|                                   "#Disabled Block End"; | ||||
| 
 | ||||
| 
 | ||||
|             var blockTranslator = new ItemFilterBlockTranslator(_testUtility.MockBlockGroupHierarchyBuilder.Object); | ||||
|             var translator = new ItemFilterScriptTranslator(blockTranslator, | ||||
|                 _testUtility.MockBlockGroupHierarchyBuilder.Object); | ||||
| 
 | ||||
|             // Act | ||||
|             var result = translator.TranslateStringToItemFilterScript(testInputScript); | ||||
| 
 | ||||
|             // Assert | ||||
|             Assert.AreEqual(2, result.ItemFilterBlocks.Count); | ||||
|             var secondBlock = result.ItemFilterBlocks.Skip(1).First(); | ||||
|             Assert.AreEqual("This is a disabled block", secondBlock.Description); | ||||
|         } | ||||
| 
 | ||||
|         private class ItemFilterScriptTranslatorTestUtility | ||||
|  | ||||
| @ -50,7 +50,7 @@ using System.Windows; | ||||
| // You can specify all the values or you can default the Build and Revision Numbers  | ||||
| // by using the '*' as shown below: | ||||
| // [assembly: AssemblyVersion("1.0.*")] | ||||
| [assembly: AssemblyVersion("0.7.*")] | ||||
| [assembly: AssemblyVersion("0.6.*")] | ||||
| 
 | ||||
| [assembly: InternalsVisibleTo("Filtration.Tests")] | ||||
| [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] | ||||
| @ -32,6 +32,7 @@ namespace Filtration.Translators | ||||
|         public string PreprocessDisabledBlocks(string inputString) | ||||
|         { | ||||
|             bool inDisabledBlock = false; | ||||
|             var showHideFound = false; | ||||
| 
 | ||||
|             var lines = Regex.Split(inputString, "\r\n|\r|\n").ToList(); | ||||
|             var linesToRemove = new List<int>(); | ||||
| @ -49,6 +50,7 @@ namespace Filtration.Translators | ||||
|                     if (lines[i].StartsWith("#Disabled Block End")) | ||||
|                     { | ||||
|                         inDisabledBlock = false; | ||||
|                         showHideFound = false; | ||||
|                         linesToRemove.Add(i); | ||||
|                         continue; | ||||
|                     } | ||||
| @ -56,13 +58,24 @@ namespace Filtration.Translators | ||||
|                     lines[i] = lines[i].TrimStart('#'); | ||||
|                     var spaceOrEndOfLinePos = lines[i].IndexOf(" ", StringComparison.Ordinal) > 0 ? lines[i].IndexOf(" ", StringComparison.Ordinal) : lines[i].Length; | ||||
|                     var lineOption = lines[i].Substring(0, spaceOrEndOfLinePos); | ||||
| 
 | ||||
|                     // If we haven't found a Show or Hide line yet, then this is probably the block comment. | ||||
|                     // Put its # back on and skip to the next line. | ||||
|                     if (lineOption != "Show" && lineOption != "Hide" && showHideFound == false) | ||||
|                     { | ||||
|                         lines[i] = "#" + lines[i]; | ||||
|                         continue; | ||||
|                     } | ||||
| 
 | ||||
|                     if (lineOption == "Show") | ||||
|                     { | ||||
|                         lines[i] = lines[i].Replace("Show", "ShowDisabled"); | ||||
|                         showHideFound = true; | ||||
|                     } | ||||
|                     else if (lineOption == "Hide") | ||||
|                     { | ||||
|                         lines[i] = lines[i].Replace("Hide", "HideDisabled"); | ||||
|                         showHideFound = true; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user