Test Cases Syntax checking (1) keyword missing, (2) any inproper input can't be parsed. aspect (ClassDictionary) MyClassDictionary {{ A = B C //. B : D | E. C = D F. D = . E = . }} aspect (Traversal) MyTraversals { //XPath context node: "A"; declare strategy: s1: "from A to D"; declare strategy: s2: "{A -> D D -> E}"; declare XPath: x1: "/+/ E"; declare XPath: x2: "union(s1, x1)"; } Semantics Test: (1) a class name used in a strategy or XPathExp must be defined in the class graph. (2) All classes defined in the classgraph. (3)Strategies in isolation. XPathRefName Correct Test (1) aspect (ClassDictionary) MyClassDictionary {{ A = B C. B : D | E. C = D F. D = . E = . }} aspect (Traversal) MyTraversals { XPath context node: "A"; declare strategy: s1: "from A to D"; declare strategy: s2: "from A via C to D"; declare strategy: s2: "from A bypassing C to D"; declare strategy: s3: "{A -> D D -> E}"; declare XPath: x1: "/+/ E"; declare XPath: x2: "union(s1, x1)"; } (2) aspect (ClassDictionary) MyClassDictionary {{ A = B C D E. B = D E. C : D | F. D = E. E = C F. F =. }} aspect (Traversal) MyTraversals { XPath context node: "A"; declare strategy: s1: "from A to D"; declare strategy: s2: "from A through C to D"; declare strategy: s2: "from A via B bypassing {C,D} via E bypassing ->*,parent,* to F"; declare strategy: s3: "{A -> E bypassing {C,D} B -> C }"; declare XPath: x1: "/+/ E"; declare XPath: x2: "/+/ B/E"; declare XPath: x3: "/+/ B /+/ E"; declare XPath: x4: "union(s1, x1)"; }