public void VisitRootNode() { var trie = new Trie(); var sut = new DepthFirstVisitor(); var expectedAction = new Mock <Action <Node> >(); sut.Visit(trie.Root, expectedAction.Object); expectedAction.Verify(x => x(trie.Root)); }
public IStationFinderStrategy CreateSut(IEnumerable <string> data) { var trie = new Trie(); foreach (var station in data) { trie.AddWord(station); } IVisitor visitor = new DepthFirstVisitor(); return(new TrieBasedStationFinderStrategy(trie, visitor)); }
public void VisitAllNodes() { var trie = new Trie(); trie.AddWord("ABER"); var sut = new DepthFirstVisitor(); var actual = new List <Node>(); Action <Node> expectedAction = x => { actual.Add(x); }; sut.Visit(trie.Root, expectedAction); actual.Select(x => x.Letter).Should().Equal(Trie.RootSymbol, 'A', 'B', 'E', 'R'); }
public void VisitChildNodesInAlphabeticalOrder() { var trie = new Trie(); trie.AddWord("A"); trie.AddWord("AB"); trie.AddWord("AC"); trie.AddWord("AD"); var sut = new DepthFirstVisitor(); var actual = new List <Node>(); Action <Node> expectedAction = x => { actual.Add(x); }; sut.Visit(trie.Root, expectedAction); actual.Select(x => x.Letter).Should().Equal(Trie.RootSymbol, 'A', 'B', 'C', 'D'); }
static void Main(string[] args) { var rawDataGetter = new RawDataGetter(); var dataStore = new DataStore(rawDataGetter); var stationsTrie = new Trie(); foreach (var station in dataStore.GetStations()) { stationsTrie.AddWord(station); } IVisitor visitor = new DepthFirstVisitor(); IStationFinderStrategy finderStrategy = new TrieBasedStationFinderStrategy(stationsTrie, visitor); if (args.Length > 0) { if (args.First() == "perf") { var basicStrategy = new BasicStationFinderStrategy(dataStore.GetStations()); var timedTest = new TimedTest(); timedTest.Execute("TrieBased", dataStore, finderStrategy); timedTest = new TimedTest(); timedTest.Execute("Basic", dataStore, basicStrategy); return; } if (args.First() == "basic") { Console.WriteLine("[Strategy: Basic]"); finderStrategy = new BasicStationFinderStrategy(dataStore.GetStations()); } } var finder = new StationFinder(finderStrategy); string userInput = ""; while (true) { Console.WriteLine("Enter a letter:"); Console.WriteLine("(or Escape to quit, backspace to delete)"); var read = Console.ReadKey(); if (read.Key == ConsoleKey.Escape) { break; } if (read.Key == ConsoleKey.Backspace) { if (userInput.Length > 0) { userInput = userInput.Substring(0, userInput.Length - 1); } } else { userInput += read.KeyChar.ToString().ToUpperInvariant(); } var suggestions = finder.GetSuggestions(userInput); Console.WriteLine($"\n\nUserInput: {userInput}"); Console.WriteLine($"NextLetters: {string.Join(" | ", suggestions.NextLetters)}"); Console.WriteLine($"Stations: {string.Join(" | ", suggestions.Stations)}\n"); } }