public void ShouldReturnEmptyListWhenKeywordNotFound()
        {
            var givenStations  = new[] { "LIVERPOOL", "LONDON BRIDGE", "PADDINGTON" };
            var searchString   = "LONDONDERRY";
            var stationsSearch = StationsSearch.BuildFromStations(givenStations);

            var(stations, characters) = stationsSearch.Search(searchString);
            Assert.Empty(stations);
            Assert.Empty(characters);
        }
        public void ShouldFindStationsAfterSpace()
        {
            var givenStations  = new[] { "LIVERPOOL", "LONDON BRIDGE", "LONDONDERRY" };
            var searchString   = "LoNDoN ";
            var stationsSearch = StationsSearch.BuildFromStations(givenStations);

            var(stations, characters) = stationsSearch.Search(searchString);

            Assert.Single(stations);
            Assert.Contains("LONDON BRIDGE", stations);

            Assert.Single(characters);
            Assert.Contains('B', characters);
        }
        public void ShouldFindStationsAndNextCharactersWithWholeWord()
        {
            var givenStations  = new[] { "LIVERPOOL LIME", "LIVERPOOL LIME STREET", "PADDINGTON" };
            var searchString   = "LIVERPOOL LIME";
            var stationsSearch = StationsSearch.BuildFromStations(givenStations);

            var(stations, characters) = stationsSearch.Search(searchString);

            Assert.Equal(2, stations.Count());
            Assert.Contains("LIVERPOOL LIME", stations);
            Assert.Contains("LIVERPOOL LIME STREET", stations);

            Assert.Single(characters);
            Assert.Contains(' ', characters);
        }
        public void ShouldReturnNotDuplicatedChars()
        {
            var givenStations  = new[] { "LIVERPOOL", "LONDONDUNE", "LONDONDERRY" };
            var searchString   = "LONDON";
            var stationsSearch = StationsSearch.BuildFromStations(givenStations);

            var(stations, characters) = stationsSearch.Search(searchString);

            Assert.Equal(2, stations.Count());
            Assert.Contains("LONDONDUNE", stations);
            Assert.Contains("LONDONDERRY", stations);

            Assert.Single(characters);
            Assert.Contains('D', characters);
        }
        public void ShouldFindStationsIgnoringCase()
        {
            var givenStations  = new[] { "LIVERPOOL", "LONDON BRIDGE", "londonderry" };
            var searchString   = "LoNDoN";
            var stationsSearch = StationsSearch.BuildFromStations(givenStations);

            var(stations, characters) = stationsSearch.Search(searchString);

            Assert.Equal(2, stations.Count());
            Assert.Contains("LONDON BRIDGE", stations);
            Assert.Contains("LONDONDERRY", stations);

            Assert.Equal(2, characters.Count());
            Assert.Contains(' ', characters);
            Assert.Contains('D', characters);
        }
        public void ShouldFindStationsAndNextCharacters()
        {
            var givenStations  = new [] { "DARTFORD", "DARTMOUTH", "DARTSHIRE", "TOWERHILL" };
            var searchString   = "DART";
            var stationsSearch = StationsSearch.BuildFromStations(givenStations);

            var(stations, characters) = stationsSearch.Search(searchString);

            Assert.Equal(3, stations.Count());
            Assert.Contains("DARTSHIRE", stations);
            Assert.Contains("DARTFORD", stations);
            Assert.Contains("DARTMOUTH", stations);

            Assert.Equal(3, characters.Count());
            Assert.Contains('S', characters);
            Assert.Contains('F', characters);
            Assert.Contains('M', characters);
        }