Exemple #1
0
        public static void TestNotResponding <T>(T dialogUnit, DialogContext context, string initMessage)
            where T : DialogUnit
        {
            DialogUnitHandleResult result = dialogUnit.Handle(context, initMessage);

            Assert.Null(result.Message);
            Assert.False(result.IsResponseAwaiting);
            Assert.False(result.IsHandled);
        }
Exemple #2
0
        public static void TestResponding <T>(T dialogUnit, DialogContext context, string initMessage, string expectedResponseMessage)
            where T : DialogUnit
        {
            DialogUnitHandleResult result = dialogUnit.Handle(context, initMessage);

            Assert.Equal(expectedResponseMessage, result.Message);
            Assert.False(result.IsResponseAwaiting);
            Assert.True(result.IsHandled);
        }
Exemple #3
0
        public void TestDontKnowResponding()
        {
            DialogUnit    dialogUnit = new ConnectedClients();
            DialogContext context    = new DialogContext();

            DialogUnitHandleResult result = dialogUnit.Handle(context, "список пользователей");

            Assert.True(result.IsHandled);
            Assert.Equal($"Я не знаю.", result.Message);
            Assert.False(result.IsResponseAwaiting);
        }
Exemple #4
0
        public void TestResponding(string question)
        {
            string        name       = "Федор";
            DialogUnit    dialogUnit = new MyNameIs(name);
            DialogContext context    = new DialogContext();

            DialogUnitHandleResult result = dialogUnit.Handle(context, question);

            Assert.Equal($"Меня зовут {name}.", result.Message);
            Assert.False(result.IsResponseAwaiting);
            Assert.True(result.IsHandled);
        }
Exemple #5
0
        public void TestHandle()
        {
            DialogContext          context           = new DialogContext();
            UnhandledFallback      unhandledFallback = new UnhandledFallback();
            DialogUnitHandleResult actualResult      = unhandledFallback.Handle(context, "Что-то невнятное");

            Assert.True(actualResult.IsHandled);
            Assert.False(actualResult.IsResponseAwaiting);
            Assert.Equal("Я тебя не понимаю.", actualResult.Message);

            Assert.False(unhandledFallback.Handle(context).IsHandled);
        }
Exemple #6
0
        public void TestDifferentClientLists(string[] clients, string expectedAnswer)
        {
            DialogUnit    dialogUnit = new ConnectedClients();
            DialogContext context    = new DialogContext();

            context.Upsert <GetConnectedClients>(() => clients);

            DialogUnitHandleResult result = dialogUnit.Handle(context, "список пользователей");

            Assert.True(result.IsHandled);
            Assert.Equal(expectedAnswer, result.Message);
            Assert.False(result.IsResponseAwaiting);
        }
Exemple #7
0
        public void TestRespondingOnDifferentQuestions(string question)
        {
            DialogUnit    dialogUnit = new ConnectedClients();
            DialogContext context    = new DialogContext();

            context.Upsert <GetConnectedClients>(() => new string[] { "Иван" });

            DialogUnitHandleResult result = dialogUnit.Handle(context, question);

            Assert.True(result.IsHandled);
            Assert.Equal($"\n - Иван", result.Message);
            Assert.False(result.IsResponseAwaiting);
        }
Exemple #8
0
        public static void TestStating <T>(T dialogUnit, DialogContext context, string expectedStatingMessageStartWith)
            where T : Statement
        {
            DialogUnitHandleResult result = dialogUnit.Handle(context);

            Assert.StartsWith(expectedStatingMessageStartWith, result.Message);
            Assert.False(result.IsResponseAwaiting);
            Assert.True(result.IsHandled);

            result = dialogUnit.Handle(context, "whatever");
            Assert.Null(result.Message);
            Assert.False(result.IsResponseAwaiting);
            Assert.False(result.IsHandled);
        }
Exemple #9
0
        private static (DialogUnitHandleResult Result, DialogUnit HandledDialogUnit) HandleMessage(
            DialogContext context, string message, IEnumerable <DialogUnit> dialogUnits, ICollection <DialogUnit> responseAwaitingDialogUnits)
        {
            foreach (DialogUnit dialogUnit in dialogUnits)
            {
                DialogUnitHandleResult result = dialogUnit.Handle(context, message);
                if (result.IsHandled)
                {
                    if (result.IsResponseAwaiting)
                    {
                        responseAwaitingDialogUnits.Add(dialogUnit);
                    }
                    else
                    {
                        responseAwaitingDialogUnits.Remove(dialogUnit);
                    }

                    return(result, dialogUnit);
                }
            }
            return(default);
Exemple #10
0
 protected override DialogUnitHandleResult HandleInternal(DialogContext context, string message, DialogUnitHandleResult previousHandledResult)
 {
     return(!string.IsNullOrEmpty(message)
 ? new DialogUnitHandleResult
     {
         Message = "Я тебя не понимаю.",
         IsHandled = true,
         IsResponseAwaiting = false
     }
 : new DialogUnitHandleResult
     {
         IsHandled = false
     });
 }
Exemple #11
0
 protected override DialogUnitHandleResult HandleInternal(DialogContext context, string message, DialogUnitHandleResult previousHandledResult)
 {
     if (message == null)
     {
         return(new DialogUnitHandleResult
         {
             Message = GetPhrase(context),
             IsHandled = true,
             IsResponseAwaiting = true
         });
     }
     else
     {
         if (IsMatched(message))
         {
             return(previousHandledResult.IsResponseAwaiting
     ? new DialogUnitHandleResult
             {
                 IsResponseAwaiting = false,
                 IsHandled = true
             }
     : new DialogUnitHandleResult
             {
                 IsResponseAwaiting = false,
                 IsHandled = true,
                 Message = GetPhrase(context)
             });
         }
         else
         {
             return(DialogUnitHandleResult.NotHandled);
         }
     }
 }
Exemple #12
0
 protected override DialogUnitHandleResult HandleInternal(DialogContext context, string message, DialogUnitHandleResult previousHandledResult)
 {
     if (message == null)
     {
         return(new DialogUnitHandleResult
         {
             Message = GetQuestion(context),
             IsResponseAwaiting = true,
             IsHandled = true
         });
     }
     else
     {
         if (previousHandledResult.IsResponseAwaiting)
         {
             string answer = ExtractAnswer(message);
             AddAnswerToContext(context, answer);
             return(new DialogUnitHandleResult
             {
                 Message = null,
                 IsHandled = true
             });
         }
         else
         {
             return(DialogUnitHandleResult.NotHandled);
         }
     }
 }
Exemple #13
0
 protected override DialogUnitHandleResult HandleInternal(DialogContext context, string message, DialogUnitHandleResult previousHandledResult)
 {
     if (IsQuestionMatched(message))
     {
         return(new DialogUnitHandleResult
         {
             Message = GetAnswer(context),
             IsHandled = true
         });
     }
     return(DialogUnitHandleResult.NotHandled);
 }