public void GetWordsForRegex() { List <string> words = new List <string>() { "spin", "span", "spit", "cats", "boot" }; AppProperties props = new AppProperties() { StartWord = "spin", EndWord = "spot", WordList = words, MismatchThreshold = 2 }; List <Node> nodes = _wordFilter.GetWordsForRegex("sp\\wn|spi\\w", props, new Node() { Word = "spin" }); nodes.OrderBy(x => x.Word); Assert.IsTrue(nodes.Count == 2); Assert.AreEqual(nodes[0].Word, "span"); Assert.AreEqual(nodes[1].Word, "spit"); }
/// <summary> /// process current Node list and determine if end word reached /// </summary> /// <param name="currentNodes"></param> /// <returns>true if goal reached</returns> public bool ProcessNodes(List <Node> currentNodes, AppProperties props) { foreach (Node n in currentNodes) { if (n.Word == props.EndWord) { FireCompleteEvent(new PuzzleEventArgs(n)); return(true); } var regex = _wordUtility.GetWordSearchRegex(n.Word, props.EndWord); n.ChildNodes = _wordFilter.GetWordsForRegex(regex, props, n); } return(false); }