From ea018b51f6fd46c7d1a6b477b19241bd5b4bf6fd Mon Sep 17 00:00:00 2001 From: Jake Ginnivan Date: Wed, 31 Jul 2013 10:43:33 +0100 Subject: [PATCH] Trying to track down this null reference exeception --- .../AutomationSearchCondition.cs | 16 ++++++++-------- .../AutomationElementSearch/DescendantFinder.cs | 4 +++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/TestStack.White/AutomationElementSearch/AutomationSearchCondition.cs b/src/TestStack.White/AutomationElementSearch/AutomationSearchCondition.cs index f1fa9ffa..3719ec4b 100644 --- a/src/TestStack.White/AutomationElementSearch/AutomationSearchCondition.cs +++ b/src/TestStack.White/AutomationElementSearch/AutomationSearchCondition.cs @@ -7,18 +7,18 @@ namespace TestStack.White.AutomationElementSearch { public class AutomationSearchCondition { - private readonly List conditions = new List(); - private static readonly Dictionary> valueMatchers = + static readonly Dictionary> ValueMatchers = new Dictionary>(); + readonly List conditions = new List(); static AutomationSearchCondition() { - valueMatchers[AutomationElement.NameProperty.ProgrammaticName] = (information, value) => information.Name.Equals(value); - valueMatchers[AutomationElement.AutomationIdProperty.ProgrammaticName] = (information, value) => information.AutomationId.Equals(value); - valueMatchers[AutomationElement.ClassNameProperty.ProgrammaticName] = (information, value) => information.ClassName.Equals(value); - valueMatchers[AutomationElement.ProcessIdProperty.ProgrammaticName] = + ValueMatchers[AutomationElement.NameProperty.ProgrammaticName] = (information, value) => information.Name.Equals(value); + ValueMatchers[AutomationElement.AutomationIdProperty.ProgrammaticName] = (information, value) => information.AutomationId.Equals(value); + ValueMatchers[AutomationElement.ClassNameProperty.ProgrammaticName] = (information, value) => information.ClassName.Equals(value); + ValueMatchers[AutomationElement.ProcessIdProperty.ProgrammaticName] = (information, value) => information.ProcessId.ToString().Equals(value.ToString()); - valueMatchers[AutomationElement.ControlTypeProperty.ProgrammaticName] = (information, value) => information.ControlType.Id.Equals(value); + ValueMatchers[AutomationElement.ControlTypeProperty.ProgrammaticName] = (information, value) => information.ControlType.Id.Equals(value); } public AutomationSearchCondition(Condition condition) @@ -132,7 +132,7 @@ private bool Satisfies(AutomationElement element, Condition[] testConditions, bo if (condition is PropertyCondition) { - var match = valueMatchers[((PropertyCondition) condition).Property.ProgrammaticName](element.Current, ((PropertyCondition) condition).Value); + var match = ValueMatchers[((PropertyCondition) condition).Property.ProgrammaticName](element.Current, ((PropertyCondition) condition).Value); if (!match && and) return false; if (match && !and) return true; } diff --git a/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs b/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs index 65452c52..23b9dbc6 100644 --- a/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs +++ b/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; using System.Windows.Automation; @@ -10,6 +11,7 @@ public class DescendantFinder : IDescendantFinder public DescendantFinder(AutomationElement automationElement) { + if (automationElement == null) throw new ArgumentNullException("automationElement"); this.automationElement = automationElement; } @@ -25,7 +27,7 @@ public virtual AutomationElement Descendant(Condition condition) public virtual List Descendants(AutomationSearchCondition automationSearchCondition) { - AutomationElementCollection collection = automationElement.FindAll(TreeScope.Descendants, automationSearchCondition.Condition); + var collection = automationElement.FindAll(TreeScope.Descendants, automationSearchCondition.Condition); var enumerable = collection.Cast(); return new List(enumerable); }