public void TestMergerTooFew()
        {
            int maxCount  = 5;
            int costSlack = 3;
            MultiSearchMerger        merger  = new MultiSearchMerger(maxCount, costSlack);
            List <MultiSearchResult> results = new List <MultiSearchResult>();

            string[][] surfaces1 = { new string[] { "a", "b" },
                                     new string[] { "c", "d" },
                                     new string[] { "e", "f" } };
            int[]      costs1 = { 1, 2, 5 };
            results.Add(MakeResult(surfaces1, costs1));

            string[][] surfaces2 = { new string[] { "a", "b" },
                                     new string[] { "c", "d" } };
            int[]      costs2 = { 1, 2 };
            results.Add(MakeResult(surfaces2, costs2));

            string[][] surfaces3 = { new string[] { "a", "b" } };
            int[]      costs3    = { 5 };
            results.Add(MakeResult(surfaces3, costs3));

            MultiSearchResult mergedResult = merger.Merge(results);

            Assert.AreEqual(4, mergedResult.Count);
            Assert.AreEqual(7, mergedResult.GetCost(0));
            Assert.AreEqual(8, mergedResult.GetCost(1));
            Assert.AreEqual(8, mergedResult.GetCost(2));
            Assert.AreEqual(9, mergedResult.GetCost(3));
            Assert.AreEqual("a b a b a b", GetSpaceSeparatedTokens(mergedResult.GetTokenizedResult(0)));
            Assert.AreEqual("c d a b a b", GetSpaceSeparatedTokens(mergedResult.GetTokenizedResult(1)));
            Assert.AreEqual("a b c d a b", GetSpaceSeparatedTokens(mergedResult.GetTokenizedResult(2)));
            Assert.AreEqual("c d c d a b", GetSpaceSeparatedTokens(mergedResult.GetTokenizedResult(3)));
        }
Ejemplo n.º 2
0
        public void TestMergerTooFew()
        {
            const int maxCount  = 5;
            const int costSlack = 3;
            var       merger    = new MultiSearchMerger(maxCount, costSlack);
            var       results   = new List <MultiSearchResult>();

            var surfaces1 = new string[][] { new string[] { "a", "b" }, new string[] { "c", "d" }, new string[] { "e", "f" } };
            var costs1    = new int[] { 1, 2, 5 };

            results.Add(MakeResult(surfaces1, costs1));

            var surfaces2 = new string[][] { new string[] { "a", "b" }, new string[] { "c", "d" } };
            var costs2    = new int[] { 1, 2 };

            results.Add(MakeResult(surfaces2, costs2));

            var surfaces3 = new string[][] { new string[] { "a", "b" } };
            var costs3    = new int[] { 5 };

            results.Add(MakeResult(surfaces3, costs3));

            MultiSearchResult mergedResult = merger.Merge(results);

            mergedResult.Count.Is(4);
            mergedResult.GetCost(0).Is(7);
            mergedResult.GetCost(1).Is(8);
            mergedResult.GetCost(2).Is(8);
            mergedResult.GetCost(3).Is(9);
            GetSpaceSeparatedTokens(mergedResult.GetTokenizedResult(0)).Is("a b a b a b");
            GetSpaceSeparatedTokens(mergedResult.GetTokenizedResult(1)).Is("c d a b a b");
            GetSpaceSeparatedTokens(mergedResult.GetTokenizedResult(2)).Is("a b c d a b");
            GetSpaceSeparatedTokens(mergedResult.GetTokenizedResult(3)).Is("c d c d a b");
        }