Example #1
0
        public void PersistSimpleSorter()
        {
            string          xml;
            IcuComparer     icomp = new IcuComparer("fr");
            GenRecordSorter grs   = new GenRecordSorter(icomp);

            xml = DynamicLoader.PersistObject(grs, "sorter");
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            Assert.AreEqual("sorter", doc.DocumentElement.Name);
            object obj = DynamicLoader.RestoreObject(doc.DocumentElement);

            try
            {
                Assert.IsInstanceOf <GenRecordSorter>(obj);
                GenRecordSorter grsOut  = obj as GenRecordSorter;
                IComparer       compOut = grsOut.Comparer;
                Assert.IsTrue(compOut is IcuComparer);
                Assert.AreEqual("fr", (compOut as IcuComparer).WsCode);
            }
            finally
            {
                var disposable = obj as IDisposable;
                if (disposable != null)
                {
                    disposable.Dispose();
                }
            }
        }
Example #2
0
        public void PersistAndSorter()
        {
            IcuComparer     icomp1  = new IcuComparer("fr");
            IcuComparer     icomp2  = new IcuComparer("en");
            GenRecordSorter grs1    = new GenRecordSorter(icomp1);
            GenRecordSorter grs2    = new GenRecordSorter(icomp2);
            ArrayList       sorters = new ArrayList();

            sorters.Add(grs1);
            sorters.Add(grs2);
            AndSorter   asorter = new AndSorter(sorters);
            string      xml     = DynamicLoader.PersistObject(asorter, "sorter");
            XmlDocument doc     = new XmlDocument();

            doc.LoadXml(xml);
            Assert.AreEqual("sorter", doc.DocumentElement.Name);
            object obj = DynamicLoader.RestoreObject(doc.DocumentElement);

            Assert.IsTrue(obj is AndSorter);
            ArrayList       sortersOut = (obj as AndSorter).Sorters;
            GenRecordSorter grsOut1    = sortersOut[0] as GenRecordSorter;
            GenRecordSorter grsOut2    = sortersOut[1] as GenRecordSorter;
            IComparer       compOut1   = grsOut1.Comparer;
            IComparer       compOut2   = grsOut2.Comparer;

            Assert.IsTrue(compOut1 is IcuComparer);
            Assert.IsTrue(compOut2 is IcuComparer);
            Assert.AreEqual("fr", (compOut1 as IcuComparer).WsCode);
            Assert.AreEqual("en", (compOut2 as IcuComparer).WsCode);
        }
        public void FullMatchIsCaseIgnorant()
        {
            var enWs        = Cache.DefaultAnalWs;
            var matchString = Cache.TsStrFactory.MakeString("bob", enWs);
            var sorter      = new GenRecordSorter(new StringFinderCompare(new OwnMlPropFinder(Cache.DomainDataByFlid, m_CitationFlid, Cache.DefaultAnalWs),
                                                                          new WritingSystemComparer((IWritingSystem)Cache.WritingSystemFactory.get_EngineOrNull(Cache.DefaultAnalWs))));
            var resultsSorter = new FindResultSorter(matchString, sorter);
            var records       = CreateRecords(new[] { "c", "Bob", "a", "Bob and more" });

            resultsSorter.Sort(records);
            VerifySortOrder(new[] { "Bob", "Bob and more", "a", "c" }, records);
        }
        public void StartsWithMatchSortsFirstAlphabeticalAfter()
        {
            var enWs        = Cache.DefaultAnalWs;
            var matchString = Cache.TsStrFactory.MakeString("b", enWs);
            var sorter      = new GenRecordSorter(new StringFinderCompare(new OwnMlPropFinder(Cache.DomainDataByFlid, m_CitationFlid, Cache.DefaultAnalWs),
                                                                          new WritingSystemComparer((IWritingSystem)Cache.WritingSystemFactory.get_EngineOrNull(Cache.DefaultAnalWs))));
            var resultsSorter = new FindResultSorter(matchString, sorter);
            var records       = CreateRecords(new[] { "c", "bob", "a" });

            resultsSorter.Sort(records);
            VerifySortOrder(new[] { "bob", "a", "c" }, records);
        }
Example #5
0
        public void SortIsAlphabeticalIfNoMatches()
        {
            var enWs          = Cache.DefaultAnalWs;
            var noMatchString = TsStringUtils.MakeString("z", enWs);
            var sorter        = new GenRecordSorter(new StringFinderCompare(new OwnMlPropFinder(Cache.DomainDataByFlid, m_CitationFlid, Cache.DefaultAnalWs),
                                                                            new WritingSystemComparer((CoreWritingSystemDefinition)Cache.WritingSystemFactory.get_EngineOrNull(Cache.DefaultAnalWs))));
            var resultsSorter = new FindResultSorter(noMatchString, sorter);
            var records       = CreateRecords(new[] { "c", "b", "a" });

            resultsSorter.Sort(records);
            VerifySortOrder(new [] { "a", "b", "c" }, records);
        }
Example #6
0
        public void FullMatchIsFollowedByStartsWithAlphabeticalAfter()
        {
            var enWs        = Cache.DefaultAnalWs;
            var matchString = TsStringUtils.MakeString("bob", enWs);
            var sorter      = new GenRecordSorter(new StringFinderCompare(new OwnMlPropFinder(Cache.DomainDataByFlid, m_CitationFlid, Cache.DefaultAnalWs),
                                                                          new WritingSystemComparer((CoreWritingSystemDefinition)Cache.WritingSystemFactory.get_EngineOrNull(Cache.DefaultAnalWs))));
            var resultsSorter = new FindResultSorter(matchString, sorter);
            var records       = CreateRecords(new[] { "c", "bob", "a", "bob and more" });

            resultsSorter.Sort(records);
            VerifySortOrder(new[] { "bob", "bob and more", "a", "c" }, records);
        }
        public void EmptyDataForIndirectStringPropertyDoesNotCrash()
        {
            var enWs        = Cache.DefaultAnalWs;
            var matchString = Cache.TsStrFactory.MakeString("irrelevant", enWs);
            // create a sorter that looks at the collection of definitions from the senses
            var sorter = new GenRecordSorter(new StringFinderCompare(new OneIndirectMlPropFinder(Cache.DomainDataByFlid, LexEntryTags.kflidSenses,
                                                                                                 m_DefinitionFlid, Cache.DefaultVernWs), new WritingSystemComparer((IWritingSystem)Cache.WritingSystemFactory.get_EngineOrNull(Cache.DefaultVernWs))));
            var records = CreateRecords("WithDef", "WithoutDef");
            // SUT
            var resultsSorter = new FindResultSorter(matchString, sorter);

            resultsSorter.Sort(records);
            // order here isn't really the SUT. The fact that we got here is the real test.
            VerifySortOrder(new[] { "WithoutDef", "WithDef" }, records);
        }
Example #8
0
        public void PersistSimpleSorter()
        {
            IcuComparer     icomp = new IcuComparer("fr");
            GenRecordSorter grs   = new GenRecordSorter(icomp);
            string          xml   = DynamicLoader.PersistObject(grs, "sorter");
            XmlDocument     doc   = new XmlDocument();

            doc.LoadXml(xml);
            Assert.AreEqual("sorter", doc.DocumentElement.Name);
            object obj = DynamicLoader.RestoreObject(doc.DocumentElement);

            Assert.IsTrue(obj is GenRecordSorter);
            GenRecordSorter grsOut  = obj as GenRecordSorter;
            IComparer       compOut = grsOut.Comparer;

            Assert.IsTrue(compOut is IcuComparer);
            Assert.AreEqual("fr", (compOut as IcuComparer).WsCode);
        }
Example #9
0
        public void OtherLanguageSystemCollationWhenCollationInValid()
        {
            var enWs        = Cache.DefaultAnalWs;
            var matchString = TsStringUtils.MakeString("buburuq", enWs);

            CoreWritingSystemDefinition mvpWs = (CoreWritingSystemDefinition)Cache.WritingSystemFactory.get_EngineOrNull(enWs);

            mvpWs.DefaultCollation = new SystemCollationDefinition {
                LanguageTag = "mvp"
            };

            var sorter = new GenRecordSorter(new StringFinderCompare(new OwnMlPropFinder(Cache.DomainDataByFlid, m_CitationFlid, enWs),
                                                                     new WritingSystemComparer(mvpWs)));

            var resultsSorter = new FindResultSorter(matchString, sorter);
            var records       = CreateRecords(new[] { "Ramban", "buburuq" });

            resultsSorter.Sort(records);
            VerifySortOrder(new[] { "buburuq", "Ramban" }, records);
        }
Example #10
0
        public void SortDoesNotThrowWhenIcuRulesAreInvalid()
        {
            var enWs        = Cache.DefaultAnalWs;
            var matchString = TsStringUtils.MakeString("buburuq", enWs);

            CoreWritingSystemDefinition mvpWs = (CoreWritingSystemDefinition)Cache.WritingSystemFactory.get_EngineOrNull(enWs);

            mvpWs.DefaultCollation = new IcuRulesCollationDefinition("standard")
            {
                IcuRules = "a < b"
            };

            var sorter = new GenRecordSorter(new StringFinderCompare(new OwnMlPropFinder(Cache.DomainDataByFlid, m_CitationFlid, enWs),
                                                                     new WritingSystemComparer(mvpWs)));

            var resultsSorter = new FindResultSorter(matchString, sorter);
            var records       = CreateRecords(new[] { "Ramban", "buburuq" });

            Assert.DoesNotThrow(() => resultsSorter.Sort(records));
            VerifySortOrder(new[] { "buburuq", "Ramban" }, records);
        }