public void InvalidSuggestionIsNotReturned()
        {
            var containerMock = new Mock <ICommandLineCommandContainer>();
            var cmdMock       = new Mock <ICommandLineCommand>();
            var optionMock    = new Mock <ICommandLineOption>();

            cmdMock.SetupGet(_ => _.Name).Returns("test");

            containerMock.SetupGet(_ => _.Commands).Returns(AsList(cmdMock.Object));
            containerMock.SetupGet(_ => _.Options).Returns(new List <ICommandLineOption>());

            var dl = new DamerauLevenshteinSuggestionProvider();

            var result = dl.GetSuggestions("abc", containerMock.Object);

            Assert.Empty(result);

            List <T> AsList <T>(T obj)
            {
                var list = new List <T>(1)
                {
                    obj
                };

                return(list);
            }
        }
        public void SuggestionsAreGatheredFromAllAvailablePlaces()
        {
            var containerMock = new Mock <ICommandLineCommandContainer>();
            var cmdMock       = new Mock <ICommandLineCommand>();
            var optionMock    = new Mock <ICommandLineOption>();

            cmdMock.SetupGet(_ => _.Name).Returns("test1");
            optionMock.SetupGet(_ => _.HasLongName).Returns(true);
            optionMock.SetupGet(_ => _.HasShortName).Returns(true);
            optionMock.SetupGet(_ => _.LongName).Returns("test2");
            optionMock.SetupGet(_ => _.ShortName).Returns("test3");

            containerMock.SetupGet(_ => _.Commands).Returns(AsList(cmdMock.Object));
            containerMock.SetupGet(_ => _.Options).Returns(AsList(optionMock.Object));

            var dl = new DamerauLevenshteinSuggestionProvider();

            var result = dl.GetSuggestions("test", containerMock.Object);

            Assert.Contains("test1", result);
            Assert.Contains("test2", result);
            Assert.Contains("test3", result);

            List <T> AsList <T>(T obj)
            {
                var list = new List <T>(1)
                {
                    obj
                };

                return(list);
            }
        }
        public void NoSuggestionsReturnsEmpty()
        {
            var containerMock = new Mock <ICommandLineCommandContainer>();

            containerMock.SetupGet(_ => _.Commands).Returns(new List <ICommandLineCommand>());
            containerMock.SetupGet(_ => _.Options).Returns(new List <ICommandLineOption>());

            var dl = new DamerauLevenshteinSuggestionProvider();

            var result = dl.GetSuggestions("abc", containerMock.Object);

            Assert.Empty(result);
        }
        public void NoContainerReturnsEmptyResult()
        {
            var dl = new DamerauLevenshteinSuggestionProvider();

            Assert.Empty(dl.GetSuggestions(string.Empty, null));
        }
        public void DistanceOfStrings(int expected, string a, string b)
        {
            var dl = new DamerauLevenshteinSuggestionProvider();

            Assert.Equal(expected, dl.FindDistance(a, b));
        }