public async Task TestMatchedIntent()
        {
            var recognizer = new LucyRecognizer()
            {
                ResourceId = "test.lucy.yaml"
            };
            var activity = new Activity(ActivityTypes.Message)
            {
                Text = "favorite color is blue"
            };
            var tc = new TurnContext(new TestAdapter(), activity);

            tc.TurnState.Add(ResourceExplorer);
            var dc      = new DialogContext(new DialogSet(), tc, new DialogState());
            var results = await recognizer.RecognizeAsync(dc, activity);

            Assert.IsTrue(results.Intents[LucyRecognizer.MatchedIntent].Score > 0);
            Assert.IsNotNull(results.Entities.Property("colors"));

            string colorProperty = (string)results.Entities["colors"][0];

            Assert.AreEqual("blue", colorProperty);
            dynamic colorProperty2 = results.Entities["$instance"]["colors"][0];

            Assert.AreEqual("colors", (String)colorProperty2.type);
            Assert.AreEqual(18, (int)colorProperty2.startIndex);
            Assert.AreEqual(22, (int)colorProperty2.endIndex);
        }
        public async Task TestEntityResultMapping()
        {
            var recognizer = new LucyRecognizer()
            {
                ResourceId = "test.lucy.yaml",
                ExternalEntityRecognizer = new MockLuisRecognizer()
            };
            var activity = new Activity(ActivityTypes.Message)
            {
                Text = "height is 6 inches"
            };
            var tc = new TurnContext(new TestAdapter(), activity);

            tc.TurnState.Add(ResourceExplorer);
            var dc      = new DialogContext(new DialogSet(), tc, new DialogState());
            var results = await recognizer.RecognizeAsync(dc, activity);

            Assert.IsNotNull(results.Entities.Property("Add()"));
            //Assert.IsNotNull(results.Entities.Property("number"));
            Assert.IsNull(results.Entities.Property("foo"));

            dynamic heightProperty = results.Entities["Add()"][0]["heightProperty"];

            Assert.IsNotNull(heightProperty);

            dynamic dimension = heightProperty[0].dimension;

            Assert.IsNotNull(dimension);

            dynamic resolution = dimension[0];

            Assert.AreEqual(6, (int)resolution.number);
            Assert.AreEqual("Inch", (string)resolution.units);

            dynamic dimensionInstance = heightProperty[0]["$instance"]["dimension"][0];

            Assert.AreEqual("dimension", (string)dimensionInstance.type);
            Assert.AreEqual(10, (int)dimensionInstance.startIndex);
            Assert.AreEqual(18, (int)dimensionInstance.endIndex);
            Assert.AreEqual("6 inches", (string)dimensionInstance.text);

            dynamic instanceEntities = results.Entities["$instance"];

            Assert.IsNotNull(instanceEntities);
            Assert.IsNotNull(instanceEntities.Property("Add()"));
            //Assert.IsNotNull(instanceEntities.Property("number"));
            Assert.IsNull(instanceEntities.Property("foo"));
        }
        public async Task TestNoneIntent()
        {
            var recognizer = new LucyRecognizer()
            {
                ResourceId = "test.lucy.yaml"
            };
            var activity = new Activity(ActivityTypes.Message)
            {
                Text = "xxxx"
            };
            var tc = new TurnContext(new TestAdapter(), activity);

            tc.TurnState.Add(ResourceExplorer);
            var dc      = new DialogContext(new DialogSet(), tc, new DialogState());
            var results = await recognizer.RecognizeAsync(dc, activity);

            Assert.AreEqual(1, results.Intents.Count);
            Assert.IsTrue(results.Intents[LucyRecognizer.NoneIntent].Score > 0);
        }
        public async Task TestValueMessage()
        {
            var recognizer = new LucyRecognizer()
            {
                ResourceId = "test.lucy.yaml",
                Intents    = new string[] { "Add()" }
            };
            var activity = new Activity(ActivityTypes.Message)
            {
                Text = null, Value = new { url = "http://foo.com" }
            };
            var tc = new TurnContext(new TestAdapter(), activity);

            tc.TurnState.Add(ResourceExplorer);
            var dc      = new DialogContext(new DialogSet(), tc, new DialogState());
            var results = await recognizer.RecognizeAsync(dc, activity);

            Assert.AreEqual(1, results.Intents.Count);
            Assert.IsTrue(results.Intents[LucyRecognizer.NoneIntent].Score > 0);
        }
        public async Task TestIntents()
        {
            var recognizer = new LucyRecognizer()
            {
                ResourceId = "test.lucy.yaml",
                Intents    = new string[] { "Add()" },
                ExternalEntityRecognizer = new MockLuisRecognizer()
            };
            var activity = new Activity(ActivityTypes.Message)
            {
                Text = "height is 6 inches"
            };
            var tc = new TurnContext(new TestAdapter(), activity);

            tc.TurnState.Add(ResourceExplorer);
            var dc      = new DialogContext(new DialogSet(), tc, new DialogState());
            var results = await recognizer.RecognizeAsync(dc, activity);

            Assert.AreEqual(1.0f, results.Intents["Add()"].Score);
        }