예제 #1
0
        public void SetDefaultWs_PreservesCheckState()
        {
            var model = new FwNewLangProjectModel(true)
            {
                LoadProjectNameSetup = () => { },
                LoadVernacularSetup  = () => { },
                ProjectName          = DbName
            };

            model.Next();
            var french    = new CoreWritingSystemDefinition("fr");
            var esperanto = new CoreWritingSystemDefinition("eo");
            var english   = new CoreWritingSystemDefinition("en");

            model.WritingSystemContainer.AddToCurrentVernacularWritingSystems(french);      // selected
            model.WritingSystemContainer.AddToCurrentVernacularWritingSystems(esperanto);   // selected
            model.WritingSystemContainer.VernacularWritingSystems.Add(english);             // deselected
            model.SetDefaultWs(new LanguageInfo {
                LanguageTag = "de"
            });
            Assert.That(model.WritingSystemContainer.VernacularWritingSystems.Count, Is.EqualTo(3), "should be three total");
            Assert.That(model.WritingSystemContainer.VernacularWritingSystems.First().LanguageTag, Is.EqualTo("de"), "first should be German");
            Assert.That(model.WritingSystemContainer.VernacularWritingSystems.Contains(esperanto), "should contain Esperanto");
            Assert.That(model.WritingSystemContainer.VernacularWritingSystems.Contains(english), "should contain English");
            Assert.That(model.WritingSystemContainer.CurrentVernacularWritingSystems.Count, Is.EqualTo(2), "should be two selected");
            Assert.That(model.WritingSystemContainer.CurrentVernacularWritingSystems[0].LanguageTag, Is.EqualTo("de"), "default should be German");
            Assert.Contains(esperanto, (ICollection)model.WritingSystemContainer.CurrentVernacularWritingSystems, "Esperanto should be selected");
        }
예제 #2
0
        public void SetDefaultWs_Analysis()
        {
            var model = new FwNewLangProjectModel(true)
            {
                LoadProjectNameSetup = () => { },
                LoadVernacularSetup  = () => { },
                LoadAnalysisSetup    = () => { },
                ProjectName          = DbName
            };

            model.Next();
            model.WritingSystemContainer.AddToCurrentVernacularWritingSystems(new CoreWritingSystemDefinition("fr"));
            model.Next();
            // English is the default Analysis WS, so we do not need to set it here.
            Assert.That(model.WritingSystemContainer.AnalysisWritingSystems.Count, Is.EqualTo(1), "Test setup problem");
            Assert.That(model.WritingSystemContainer.AnalysisWritingSystems.First().LanguageTag, Is.EqualTo("en"), "Test setup problem");
            Assert.That(model.WritingSystemContainer.CurrentAnalysisWritingSystems.Count, Is.EqualTo(1), "Test setup problem");
            Assert.That(model.WritingSystemContainer.CurrentAnalysisWritingSystems.First().LanguageTag, Is.EqualTo("en"), "Test setup problem");
            model.SetDefaultWs(new LanguageInfo {
                LanguageTag = "de"
            });
            Assert.That(model.WritingSystemContainer.AnalysisWritingSystems.Count, Is.EqualTo(1), "all");
            Assert.That(model.WritingSystemContainer.AnalysisWritingSystems.First().LanguageTag, Is.EqualTo("de"), "should be German");
            Assert.That(model.WritingSystemContainer.CurrentAnalysisWritingSystems.Count, Is.EqualTo(1), "current");
            Assert.That(model.WritingSystemContainer.CurrentAnalysisWritingSystems[0].LanguageTag, Is.EqualTo("de"), "default should be German");
        }
예제 #3
0
        public void FwNewLangProjectModel_VernacularAndAnalysisSame_WarningIssued()
        {
            bool warningIssued = false;
            var  model         = new FwNewLangProjectModel();

            model.LoadProjectNameSetup = () => { };
            model.LoadVernacularSetup  = () => { };
            model.LoadAnalysisSetup    = () => { };
            model.LoadAnalysisSameAsVernacularWarning = () => { warningIssued = true; };
            model.ProjectName = DbName;
            var fakeTestWs = new CoreWritingSystemDefinition("fr");

            model.WritingSystemContainer.CurrentVernacularWritingSystems.Add(fakeTestWs);
            model.WritingSystemContainer.VernacularWritingSystems.Add(fakeTestWs);
            model.WritingSystemContainer.CurrentAnalysisWritingSystems.Add(fakeTestWs);
            model.WritingSystemContainer.AnalysisWritingSystems.Add(fakeTestWs);
            Assert.True(model.CanGoNext());
            model.Next();             // Move to choose default vernacular
            Assert.True(model.CanGoNext());
            model.Next();             // Move to choose default analysis
            model.SetDefaultWs(new LanguageInfo()
            {
                LanguageTag = "fr"
            });
            Assert.True(warningIssued, "Warning for analysis same as vernacular not triggered");
            Assert.True(model.CanGoNext());             // The user can ignore the warning
        }
예제 #4
0
 private void ChooseLanguageClick(object sender, System.EventArgs e)
 {
     using (var langPicker = new LanguageLookupDialog())
     {
         if (_listType == FwWritingSystemSetupModel.ListType.Vernacular)
         {
             langPicker.SearchText = _model.ProjectName;
         }
         var result = langPicker.ShowDialog(this);
         if (result == DialogResult.OK)
         {
             _model.SetDefaultWs(langPicker.SelectedLanguage);
         }
     }
 }
예제 #5
0
        public void SetDefaultWs_DoesNotDuplicate()
        {
            var model = new FwNewLangProjectModel(true)
            {
                LoadProjectNameSetup = () => { },
                LoadVernacularSetup  = () => { },
                ProjectName          = DbName
            };

            model.Next();
            model.WritingSystemContainer.AddToCurrentVernacularWritingSystems(new CoreWritingSystemDefinition("de"));
            model.SetDefaultWs(new LanguageInfo {
                LanguageTag = "de"
            });
            Assert.That(model.WritingSystemContainer.VernacularWritingSystems.Count, Is.EqualTo(1), "should be only one WS");
            Assert.That(model.WritingSystemContainer.VernacularWritingSystems.First().LanguageTag, Is.EqualTo("de"), "should be German");
            Assert.That(model.WritingSystemContainer.CurrentVernacularWritingSystems.Count, Is.EqualTo(1), "should be only one current");
            Assert.That(model.WritingSystemContainer.CurrentVernacularWritingSystems.First().LanguageTag, Is.EqualTo("de"),
                        "default should be German");
        }
예제 #6
0
        public void SetDefaultWs_ReplacesExistingDefault()
        {
            var model = new FwNewLangProjectModel(true)
            {
                LoadProjectNameSetup = () => { },
                LoadVernacularSetup  = () => { },
                ProjectName          = DbName
            };

            model.Next();
            model.WritingSystemContainer.AddToCurrentVernacularWritingSystems(new CoreWritingSystemDefinition("fr"));
            model.WritingSystemContainer.AddToCurrentVernacularWritingSystems(new CoreWritingSystemDefinition("en"));
            model.SetDefaultWs(new LanguageInfo {
                LanguageTag = "de"
            });
            Assert.That(model.WritingSystemContainer.VernacularWritingSystems.Count, Is.EqualTo(2), "all");
            Assert.That(model.WritingSystemContainer.VernacularWritingSystems.First().LanguageTag, Is.EqualTo("de"), "first should be German");
            Assert.That(model.WritingSystemContainer.CurrentVernacularWritingSystems.Count, Is.EqualTo(2), "current");
            Assert.That(model.WritingSystemContainer.CurrentVernacularWritingSystems.First().LanguageTag, Is.EqualTo("de"),
                        "default should be German");
        }
예제 #7
0
        private static void CreateDb(string dbName, string vernWs = "fr")
        {
            var testProject = new FwNewLangProjectModel(true)
            {
                LoadProjectNameSetup = () => { },
                LoadVernacularSetup  = () => { },
                LoadAnalysisSetup    = () => { },
                ProjectName          = dbName,
                AnthroModel          = new FwChooseAnthroListModel {
                    CurrentList = FwChooseAnthroListModel.ListChoice.UserDef
                }
            };

            testProject.Next();
            testProject.SetDefaultWs(new LanguageInfo {
                LanguageTag = vernWs
            });
            testProject.Next();
            using (var threadHelper = new ThreadHelper())
            {
                testProject.CreateNewLangProj(new DummyProgressDlg(), threadHelper);
            }
        }
예제 #8
0
        public void SetDefaultWs_ManyExist_OthersArePreservedInOrder()
        {
            var model = new FwNewLangProjectModel(true)
            {
                LoadProjectNameSetup = () => { },
                LoadVernacularSetup  = () => { },
                ProjectName          = DbName
            };

            model.Next();
            model.WritingSystemContainer.AddToCurrentVernacularWritingSystems(new CoreWritingSystemDefinition("en"));
            model.WritingSystemContainer.AddToCurrentVernacularWritingSystems(new CoreWritingSystemDefinition("de"));
            model.WritingSystemContainer.AddToCurrentVernacularWritingSystems(new CoreWritingSystemDefinition("fr"));
            model.SetDefaultWs(new LanguageInfo {
                LanguageTag = "de"
            });
            Assert.That(model.WritingSystemContainer.VernacularWritingSystems.Count, Is.EqualTo(3), "all");
            Assert.That(model.WritingSystemContainer.VernacularWritingSystems.First().LanguageTag, Is.EqualTo("de"), "first should be German");
            Assert.That(model.WritingSystemContainer.CurrentVernacularWritingSystems.Count, Is.EqualTo(3), "current");
            Assert.That(model.WritingSystemContainer.CurrentVernacularWritingSystems[0].LanguageTag, Is.EqualTo("de"), "default should be German");
            Assert.That(model.WritingSystemContainer.CurrentVernacularWritingSystems[1].LanguageTag, Is.EqualTo("en"), "econd should be English");
            Assert.That(model.WritingSystemContainer.CurrentVernacularWritingSystems[2].LanguageTag, Is.EqualTo("fr"), "third should be French");
        }
예제 #9
0
        public void FwNewLangProjectModel_VerifyCreateNewLangProject()
        {
            LcmCache cache = null;

            var testProject = new FwNewLangProjectModel(true)
            {
                LoadProjectNameSetup = () => { },
                LoadVernacularSetup  = () => { },
                LoadAnalysisSetup    = () => { },
                AnthroModel          = new FwChooseAnthroListModel {
                    CurrentList = FwChooseAnthroListModel.ListChoice.UserDef
                }
            };

            try
            {
                testProject.ProjectName = DbName;
                testProject.Next();
                testProject.SetDefaultWs(new LanguageInfo {
                    LanguageTag = "fr"
                });
                testProject.Next();
                testProject.SetDefaultWs(new LanguageInfo {
                    LanguageTag = "de"
                });
                using (var threadHelper = new ThreadHelper())
                {
                    testProject.CreateNewLangProj(new DummyProgressDlg(), threadHelper);
                }

                Assert.IsTrue(DbExists(DbName));

                // despite of the name is DummyProgressDlg no real dialog (doesn't derive from Control), so
                // we don't need a 'using'
                cache = LcmCache.CreateCacheFromExistingData(
                    new TestProjectId(BackendProviderType.kXMLWithMemoryOnlyWsMgr, DbFilename(DbName)), "en", new DummyLcmUI(),
                    FwDirectoryFinder.LcmDirectories, new LcmSettings(), new DummyProgressDlg());
                CheckInitialSetOfPartsOfSpeech(cache);

                Assert.AreEqual(2, cache.ServiceLocator.WritingSystems.AnalysisWritingSystems.Count);
                Assert.AreEqual("German", cache.ServiceLocator.WritingSystems.AnalysisWritingSystems.First().LanguageName);
                Assert.AreEqual("English", cache.ServiceLocator.WritingSystems.AnalysisWritingSystems.Last().LanguageName);
                Assert.AreEqual(2, cache.ServiceLocator.WritingSystems.CurrentAnalysisWritingSystems.Count);
                Assert.AreEqual("German", cache.ServiceLocator.WritingSystems.DefaultAnalysisWritingSystem.LanguageName);
                Assert.AreEqual("English", cache.ServiceLocator.WritingSystems.CurrentAnalysisWritingSystems.Last().LanguageName,
                                "English should be selected as an analysis writing system even if the user tried to remove it");
                Assert.AreEqual(1, cache.ServiceLocator.WritingSystems.VernacularWritingSystems.Count);
                Assert.AreEqual("French", cache.ServiceLocator.WritingSystems.VernacularWritingSystems.First().LanguageName);
                Assert.AreEqual(1, cache.ServiceLocator.WritingSystems.CurrentVernacularWritingSystems.Count);
                Assert.AreEqual("French", cache.ServiceLocator.WritingSystems.DefaultVernacularWritingSystem.LanguageName);
            }
            finally
            {
                // Blow away the database to clean things up
                if (cache != null)
                {
                    cache.Dispose();
                }
                DestroyDb(DbName, false);
            }
        }