예제 #1
0
        public void multi_word_extra_chars_in_middle_of_text02()
        {
            var details = run_determinator("abc xyz zxcv", "abc wyzbbbbbbbbbb qxzv");

            HighlightedTextBuilder  builder = new HighlightedTextBuilder();
            Queue <HighlightedText> result  = builder.Compute("abc xyz zxcv", details);

            Assert.That(result, Is.EquivalentTo(
                            new Queue <HighlightedText>(
                                new List <HighlightedText>()
            {
                new HighlightedText()
                {
                    HighlightType = HighlightType.Normal,
                    Text          = "abc ",
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.IncorrectChar,
                    Text          = "x"
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.Normal,
                    Text          = "yz"
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.ExtraChars,
                    Text          = "++++++++++"
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.Normal,
                    Text          = " "
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.IncorrectChar,
                    Text          = "z"
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.Normal,
                    Text          = "x"
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.IncorrectChar,
                    Text          = "c"
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.Normal,
                    Text          = "v"
                }
            }
                                )
                            ));
        }
예제 #2
0
        public void single_word_simple_incorrect_char_end_of_word()
        {
            var details = run_determinator("abc", "abx");

            HighlightedTextBuilder  builder = new HighlightedTextBuilder();
            Queue <HighlightedText> result  = builder.Compute("abc", details);

            Assert.That(result, Is.EquivalentTo(
                            new Queue <HighlightedText>(
                                new List <HighlightedText>()
            {
                new HighlightedText()
                {
                    HighlightType = HighlightType.Normal,
                    Text          = "ab",
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.IncorrectChar,
                    Text          = "c"
                },
            }
                                )
                            ));
        }
예제 #3
0
        public void multi_word_single_incorrect_chars_start_of_text_secondword()
        {
            var details = run_determinator("abc xyz", "abc wyz");

            HighlightedTextBuilder  builder = new HighlightedTextBuilder();
            Queue <HighlightedText> result  = builder.Compute("abc xyz", details);

            Assert.That(result, Is.EquivalentTo(
                            new Queue <HighlightedText>(
                                new List <HighlightedText>()
            {
                new HighlightedText()
                {
                    HighlightType = HighlightType.Normal,
                    Text          = "abc ",
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.IncorrectChar,
                    Text          = "x"
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.Normal,
                    Text          = "yz"
                },
            }
                                )
                            ));
        }
        public HttpResponseMessage RunForSequence(SequenceModel sequenceFromClient)
        {
            KeySequence keySeq = new History.UserSessionHistory().GetHistoryDetailsByKeySequence(sequenceFromClient.SequenceId);

            //if the text entered from the db and the text from the client is 
            //empty or null then return analysis unavailable
            if (string.IsNullOrWhiteSpace(keySeq.TextEntered)
                && string.IsNullOrWhiteSpace(sequenceFromClient.TextEntered))
            {
                var invalid =  new List<HighlightedText>() { new HighlightedText() {
                    HighlightType = HighlightType.Unevaluated,
                    Text = "No analysis available for this sequence.  No user provided text detected."
                }};
                return Request.CreateResponse(HttpStatusCode.OK, invalid);
            }

            Accuracy accuracy = new Accuracy(new AnalyticData() {
                TextShown = keySeq.TextShown,
                TextEntered = 
                    (string.IsNullOrWhiteSpace(keySeq.TextEntered))
                    ? sequenceFromClient.TextEntered : keySeq.TextEntered
            });
            accuracy.Compute();

            IList<HighlightDetail> details = new HighlightDeterminator().Compute(accuracy);
            HighlightedTextBuilder highlightBuilder = new HighlightedTextBuilder();
            Queue<HighlightedText> highlightedSections = highlightBuilder.Compute(keySeq.TextShown, details);

            return Request.CreateResponse(HttpStatusCode.OK, highlightedSections.ToList());
        }
예제 #5
0
        public void large_word_with_extra_characters_in_middle_ofparagraph_does_not_throw_out_of_bounds()
        {
            string orig    = "This is a list of listed buildings in the parish of Kirkcaldy and Dysart in Fife, Scotland";
            var    details = run_determinator(
                orig,
                "This is a list of lisadfa buildingss in the parish of Kirkcaldy and the Dysart in Fife, Scotland"
                );

            HighlightedTextBuilder builder = new HighlightedTextBuilder();

            Assert.DoesNotThrow(() => builder.Compute(orig, details));
        }
예제 #6
0
        public void large_gap_in_incorrect_sections_does_not_throw_exception_for_out_of_bounds()
        {
            string orig    = "Brett Rodwell (born 23 May 1970) is an Australian former professional rugby league footballer who played in the 1980s and 1990s";
            var    details = run_determinator(
                orig,
                "Brett Rodwell (born 23 May 197y0) is an Australian former professional ruby league footballer who played in the 190s and 1990s"
                );

            HighlightedTextBuilder builder = new HighlightedTextBuilder();

            Assert.DoesNotThrow(() => builder.Compute(orig, details));
        }
예제 #7
0
        public void multi_word_unevaluated_chars_includes_space_in_unevaluated()
        {
            var details = run_determinator("abc xyz zxcv", "abc wyzbbb");

            HighlightedTextBuilder  builder = new HighlightedTextBuilder();
            Queue <HighlightedText> result  = builder.Compute("abc xyz zxcv", details);

            Assert.That(result, Is.EquivalentTo(
                            new Queue <HighlightedText>(
                                new List <HighlightedText>()
            {
                new HighlightedText()
                {
                    HighlightType = HighlightType.Normal,
                    Text          = "abc ",
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.IncorrectChar,
                    Text          = "x"
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.Normal,
                    Text          = "yz"
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.ExtraChars,
                    Text          = "+++"
                },
                new HighlightedText()
                {
                    HighlightType = HighlightType.Unevaluated,
                    Text          = " zxcv"
                }
            }
                                )
                            ));
        }
예제 #8
0
        public IList <Inline> ConvertHighlightsToInlines(string origText, Accuracy accuracy)
        {
            HighlightDeterminator   highlighter = new HighlightDeterminator();
            IList <HighlightDetail> details     = highlighter.Compute(accuracy);

            HighlightedTextBuilder  highlightBuilder    = new HighlightedTextBuilder();
            Queue <HighlightedText> highlightedSections = highlightBuilder.Compute(_seqInputModel.TextShown, details);

            IList <Inline> inlines = new List <Inline>();

            while (highlightedSections.Count > 0)
            {
                var    section    = highlightedSections.Dequeue();
                Inline newSection = new Run(section.Text);
                newSection.Foreground = new Util.HighlightBrushFactory().HighlightToBrush(section.HighlightType);
                if (section.HighlightType != HighlightType.Normal)
                {
                    newSection.FontWeight = System.Windows.FontWeights.Bold;
                }

                inlines.Add(newSection);
            }
            return(inlines);
        }