Exemplo n.º 1
0
        public void RankTest()
        {
            // "it ranks full-word > start-of-word > end-of-word > middle-of-word > split > scattered letters"

            var candidates = new List <string>
            {
                "controller x",
                "0_co_re_00 x",
                "0core0_000 x",
                "0core_0000 x",
                "0_core0_00 x",
                "0_core_000 x"
            };

            var result = StringScorer.Filter(candidates, "core");

            Assert.Equal(result[0].Word, candidates[5]);
            Assert.Equal(result[1].Word, candidates[4]);
            Assert.Equal(result[2].Word, candidates[3]);
            Assert.Equal(result[3].Word, candidates[2]);
            Assert.Equal(result[4].Word, candidates[1]);
            Assert.Equal(result[5].Word, candidates[0]);

            var result2 = StringScorer.Filter(candidates, "core x");

            Assert.Equal(result2[0].Word, candidates[5]);
            Assert.Equal(result2[1].Word, candidates[4]);
            Assert.Equal(result2[2].Word, candidates[3]);
            Assert.Equal(result2[3].Word, candidates[2]);
            Assert.Equal(result2[4].Word, candidates[1]);
            Assert.Equal(result2[5].Word, candidates[0]);
        }
Exemplo n.º 2
0
 public void PreferCaseSensitivesMatchesTest()
 {
     Assert.Equal(new int[] { 0, 1, 2 }, StringScorer.Match("ccc CCC cCc CcC CCc", "ccc"));
     Assert.Equal(new int[] { 4, 5, 6 }, StringScorer.Match("ccc CCC cCc CcC CCc", "CCC"));
     Assert.Equal(new int[] { 8, 9, 10 }, StringScorer.Match("ccc CCC cCc CcC CCc", "cCc"));
     Assert.Equal(new int[] { 12, 13, 14 }, StringScorer.Match("ccc CCC cCc CcC CCc", "CcC"));
     Assert.Equal(new int[] { 16, 17, 18 }, StringScorer.Match("ccc CCC cCc CcC CCc", "CCc"));
 }
Exemplo n.º 3
0
 public void PathMatcherTest()
 {
     Assert.Equal(new int[] { 0, 1, 2 }, StringScorer.Match(@"X\Y", @"X\Y"));
     Assert.Equal(new int[] { 0, 2 }, StringScorer.Match(@"X\X-x", @"X"));
     Assert.Equal(new int[] { 0, 2 }, StringScorer.Match(@"X\Y", @"XY"));
     Assert.Equal(new int[] { 2 }, StringScorer.Match(@"-\X", @"X"));
     Assert.Equal(new int[] { 0, 1, 3, 4 }, StringScorer.Match(@"XY\XY", @"XY"));
     Assert.Equal(new int[] { 2, 4, 8, 11 }, StringScorer.Match(@"--X-Y-\-X--Y", @"XY"));
 }
Exemplo n.º 4
0
 public void HelloWordScoreTest()
 {
     Assert.True(StringScorer.Score("Hello Word", "he") < StringScorer.Score("Hello Word", "Hello"));
     Assert.Equal(0, StringScorer.Score("Hello Word", ""));
     Assert.Equal(0, StringScorer.Score("Hello Word", null));
     Assert.Equal(0, StringScorer.Score(" ", "he"));
     Assert.Equal(0, StringScorer.Score(null, "he"));
     Assert.Equal(0, StringScorer.Score("", ""));
     Assert.Equal(0, StringScorer.Score(null, null));
     Assert.Equal(0, StringScorer.Score("", "abc"));
 }
Exemplo n.º 5
0
 public void HelloWorldMatcherTest()
 {
     Assert.Equal(new int[] { 0, 1 }, StringScorer.Match("Hello World", "he"));
     Assert.Equal(new int[] { 6, 7, 8 }, StringScorer.Match("Hello World", "wor"));
     Assert.Equal(new int[] { 10 }, StringScorer.Match("Hello World", "d"));
     Assert.Equal(new int[] { 1, 2, 6, 7, 8 }, StringScorer.Match("Hello World", "elwor"));
     Assert.Equal(new int[] {}, StringScorer.Match("Hello World", ""));
     Assert.Equal(new int[] {}, StringScorer.Match(null, "he"));
     Assert.Equal(new int[] {}, StringScorer.Match("", ""));
     Assert.Equal(new int[] {}, StringScorer.Match("", "abc"));
 }
        public void GlobalAlign()
        {
            var scorer = new StringScorer();
            var msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "car", "bar", GetChars);
            msa.Compute();
            Alignment<string, char>[] alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(1));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "| c a r |",
                "| b a r |"
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.66).Within(0.01));

            msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "cart", "bar", GetChars);
            msa.Compute();
            alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(1));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "| c a r t |",
                "| b a r - |"
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.25).Within(0.01));

            msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "cart", "art", GetChars);
            msa.Compute();
            alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(1));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "| c a r t |",
                "| - a r t |"
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.50).Within(0.01));

            msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "start", "tan", GetChars);
            msa.Compute();
            alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(2));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "| s t a r t |",
                "| - t a - n |"
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.00).Within(0.01));
            AssertAlignmentsEqual(alignments[1], CreateAlignment(
                "| s t a r t |",
                "| - t a n - |"
                ));
            Assert.That(alignments[1].NormalizedScore, Is.EqualTo(0.00).Within(0.01));
        }
        public void ExpansionCompressionAlign()
        {
            var scorer = new StringScorer();
            var msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "car", "bar", GetChars) {ExpansionCompressionEnabled = true};
            msa.Compute();
            Alignment<string, char>[] alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(1));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "| c a r |",
                "| b a r |"
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.66).Within(0.01));

            msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "cart", "bar", GetChars) {ExpansionCompressionEnabled = true};
            msa.Compute();
            alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(1));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "| c a rt |",
                "| b a r  |"
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.50).Within(0.01));

            msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "cart", "art", GetChars) {ExpansionCompressionEnabled = true};
            msa.Compute();
            alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(1));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "| ca r t |",
                "| a  r t |"
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.75).Within(0.01));

            msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "start", "tan", GetChars) {ExpansionCompressionEnabled = true};
            msa.Compute();
            alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(2));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "| st ar t |",
                "| t  a  n |"
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.40).Within(0.01));
            AssertAlignmentsEqual(alignments[1], CreateAlignment(
                "| st a rt |",
                "| t  a n  |"
                ));
            Assert.That(alignments[1].NormalizedScore, Is.EqualTo(0.40).Within(0.01));
        }
Exemplo n.º 8
0
        public void ReturnMostAccurateLimitedResultTest()
        {
            var opts       = new StringScorerOptions(maxResults: 1);
            var candidates = new List <string> {
                "GruntFile", "filter", "bile"
            };

            var result = StringScorer.Filter(candidates, "file", opts);
            var words  = result.Select(x => x.Word).ToList();

            Assert.Single(result);
            Assert.Equal(new [] { "GruntFile" }, words);
        }
        public void AlignEmptySequence()
        {
            var scorer = new StringScorer();
            var msa = new MultipleAlignmentAlgorithm<string, char>(scorer, new[] {"car", "", "bar"}, GetChars) {UseInputOrder = true};
            msa.Compute();
            Alignment<string, char> alignment = msa.GetAlignment();

            AssertAlignmentsEqual(alignment, CreateAlignment(
                "| c a r |",
                "| - - - |",
                "| b a r |"
                ));
        }
Exemplo n.º 10
0
        public void ReturnMostAccurateResultTest()
        {
            var candidates = new List <string> {
                "GruntFile", "filter", "bile"
            };

            var result = StringScorer.Filter(candidates, "file");
            var words  = result.Select(x => x.Word).ToList();

            Assert.Equal(2, result.Length);
            Assert.Contains("GruntFile", words);
            Assert.Contains("filter", words);
        }
        public void AlignLessThanThreeSequences()
        {
            var scorer = new StringScorer();
            Assert.Throws<ArgumentException>(() =>
                {
                    var msa = new MultipleAlignmentAlgorithm<string, char>(scorer, Enumerable.Empty<string>(), GetChars);
                });

            Assert.Throws<ArgumentException>(() =>
                {
                    var msa = new MultipleAlignmentAlgorithm<string, char>(scorer, new[] {"bar"}, GetChars);
                });

            Assert.Throws<ArgumentException>(() =>
                {
                    var msa = new MultipleAlignmentAlgorithm<string, char>(scorer, new[] {"car", "bar"}, GetChars);
                });
        }
Exemplo n.º 12
0
 public void PreferWholeWordToScatteredLettersTest()
 {
     Assert.Equal(new int[] { 12, 13, 14, 15 }, StringScorer.Match("fiddle gruntfile filler", @"file"));
     Assert.Equal(new int[] { 7, 8, 9, 10 }, StringScorer.Match("fiddle file", @"file"));
     Assert.Equal(new int[] { 8, 9, 10, 11 }, StringScorer.Match("find le file", @"file"));
 }
Exemplo n.º 13
0
 private IResultSubject[] Filter(List <string> candidates, string query, StringScorerOptions options = null)
 {
     return(StringScorer.Filter(candidates, query, options));
 }
        public void AlignMoreThanTwoSequences()
        {
            var scorer = new StringScorer();
            var msa = new MultipleAlignmentAlgorithm<string, char>(scorer, new[] {"car", "bar", "carp"}, GetChars) {UseInputOrder = true};
            msa.Compute();
            Alignment<string, char> alignment = msa.GetAlignment();

            AssertAlignmentsEqual(alignment, CreateAlignment(
                "| c a r - |",
                "| b a r - |",
                "| c a r p |"
                ));

            msa = new MultipleAlignmentAlgorithm<string, char>(scorer, new[] {"car", "bar", "star"}, GetChars) {UseInputOrder = true};
            msa.Compute();
            alignment = msa.GetAlignment();

            AssertAlignmentsEqual(alignment, CreateAlignment(
                "| - c a r |",
                "| - b a r |",
                "| s t a r |"
                ));

            msa = new MultipleAlignmentAlgorithm<string, char>(scorer, new[] {"car", "bar", "stare"}, GetChars) {UseInputOrder = true};
            msa.Compute();
            alignment = msa.GetAlignment();

            AssertAlignmentsEqual(alignment, CreateAlignment(
                "| - c a r - |",
                "| - b a r - |",
                "| s t a r e |"
                ));

            msa = new MultipleAlignmentAlgorithm<string, char>(scorer, new[] {"scar", "car", "bar", "stare"}, GetChars) {UseInputOrder = true};
            msa.Compute();
            alignment = msa.GetAlignment();

            AssertAlignmentsEqual(alignment, CreateAlignment(
                "| s c a r - |",
                "| - c a r - |",
                "| - b a r - |",
                "| s t a r e |"
                ));

            msa = new MultipleAlignmentAlgorithm<string, char>(scorer, new[] {"sane", "scar", "car", "bar", "stare"}, GetChars) {UseInputOrder = true};
            msa.Compute();
            alignment = msa.GetAlignment();

            AssertAlignmentsEqual(alignment, CreateAlignment(
                "| s - a n e |",
                "| s c a r - |",
                "| - c a r - |",
                "| - b a r - |",
                "| s t a r e |"
                ));

            msa = new MultipleAlignmentAlgorithm<string, char>(scorer, new[] {"sane", "scar", "she", "car", "bar", "stare"}, GetChars) {UseInputOrder = true};
            msa.Compute();
            alignment = msa.GetAlignment();

            AssertAlignmentsEqual(alignment, CreateAlignment(
                "| s - a n e |",
                "| s c a r - |",
                "| s - - h e |",
                "| - c a r - |",
                "| - b a r - |",
                "| s t a r e |"
                ));
        }
Exemplo n.º 15
0
 public void AccountForCaseInSelectingCamelCaseVsConsecutiveTest()
 {
     Assert.Equal(new int[] { 10, 15, 22 }, StringScorer.Match("0xACACAC: CamelControlClass.ccc", "CCC"));
     Assert.Equal(new int[] { 28, 29, 30 }, StringScorer.Match("0xACACAC: CamelControlClass.ccc", "ccc"));
 }
Exemplo n.º 16
0
 public void PreferAcronymToScatteredLettersTest()
 {
     Assert.Equal(new int[] { 0, 7, 8, 9 }, StringScorer.Match("action_config", "acon"));
     Assert.Equal(new int[] { 0, 12, 13, 14 }, StringScorer.Match("application_control", "acon"));
 }
Exemplo n.º 17
0
 public void PreferCamelCaseToScatteredLettersTest()
 {
     Assert.Equal(new int[] { 0, 10, 15 }, StringScorer.Match("ImportanceTableCtrl", "itc"));
 }
        public void SemiGlobalAlign()
        {
            var scorer = new StringScorer();
            var msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "car", "bar", GetChars) {Mode = AlignmentMode.SemiGlobal};
            msa.Compute();
            Alignment<string, char>[] alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(1));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "| c a r |",
                "| b a r |"
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.66).Within(0.01));

            msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "cart", "bar", GetChars) {Mode = AlignmentMode.SemiGlobal};
            msa.Compute();
            alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(1));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "| c a r | t",
                "| b a r |  "
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.57).Within(0.01));

            msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "cart", "art", GetChars) {Mode = AlignmentMode.SemiGlobal};
            msa.Compute();
            alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(1));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "c | a r t |",
                "  | a r t |"
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.86).Within(0.01));

            msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "start", "tan", GetChars) {Mode = AlignmentMode.SemiGlobal};
            msa.Compute();
            alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(1));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "s | t a r | t",
                "  | t a n |  "
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.50).Within(0.01));
        }
Exemplo n.º 19
0
 public void PreferWholeWordToScatteredLettersEventWithouthMatchesTest()
 {
     Assert.Equal(new int[] { 12, 13, 14, 15, 17 }, StringScorer.Match("fiddle gruntfile xfiller", @"filex"));
     Assert.Equal(new int[] { 7, 8, 9, 10, 12 }, StringScorer.Match("fiddle file xfiller", @"filex"));
     Assert.Equal(new int[] { 8, 9, 10, 11, 13 }, StringScorer.Match("find le file xfiller", @"filex"));
 }
Exemplo n.º 20
0
 public void PreferExactMatchesTest()
 {
     Assert.Equal(new int[] { 12, 13, 14, 15 }, StringScorer.Match("filter gruntfile filler", @"file"));
 }
        public void SemiGlobalAlign_EmptySequence()
        {
            var scorer = new StringScorer();
            var msa = new PairwiseAlignmentAlgorithm<string, char>(scorer, "", "", GetChars) {Mode = AlignmentMode.SemiGlobal};
            msa.Compute();
            Alignment<string, char>[] alignments = msa.GetAlignments().ToArray();

            Assert.That(alignments.Length, Is.EqualTo(1));
            AssertAlignmentsEqual(alignments[0], CreateAlignment(
                "||",
                "||"
                ));
            Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0));
        }