public void OtherKnownWritingSystems_TokPisinAlreadyExists_DoesNotHaveTokPisin()
		{
			var suggestor = new WritingSystemSuggestor();

			var existingWritingSystems = new List<WritingSystemDefinition>{WritingSystemDefinition.Parse("tpi")};
			Assert.That(suggestor.GetOtherLanguageSuggestions(existingWritingSystems).Any(ws => ws.Label == "Tok Pisin"), Is.False);
		}
		public void OtherKnownWritingSystems_TokPisinDoesNotAlreadyExist_HasTokPisin()
		{
			var suggestor = new WritingSystemSuggestor();

			var existingWritingSystems = new List<WritingSystemDefinition>();
			Assert.That(suggestor.GetOtherLanguageSuggestions(existingWritingSystems).Any(ws=>ws.Label == "Tok Pisin"), Is.True);
		}
		public WritingSystemTreeModel(WritingSystemSetupModel setupModel)
		{
			_setupModel = setupModel;
			_setupModel.ItemAddedOrDeleted += new EventHandler(OnSetupModel_ItemAddedOrDeleted);
			_setupModel.CurrentItemUpdated += new EventHandler(OnCurrentItemUpdated);
			Suggestor = new WritingSystemSuggestor();
		}
 public WritingSystemTreeModel(WritingSystemSetupModel setupModel)
 {
     _setupModel = setupModel;
     _setupModel.ItemAddedOrDeleted += new EventHandler(OnSetupModel_ItemAddedOrDeleted);
     _setupModel.CurrentItemUpdated += new EventHandler(OnCurrentItemUpdated);
     Suggestor = new WritingSystemSuggestor();
 }
		[Test] // ok
		public void GetSuggestions_HasNormalAndIPA_DoesNotIncludeItemToCreateIPA()
		{
			var etr = new WritingSystemDefinition("etr", string.Empty, string.Empty, string.Empty, "edo", false);
			var etrIpa = new WritingSystemDefinition("etr", string.Empty, string.Empty,  "fonipa", "edo", false);
			var list = new List<WritingSystemDefinition>(new[] { etr, etrIpa });
			var suggestor = new WritingSystemSuggestor();
			var suggestions = suggestor.GetSuggestions(etr, list);

			Assert.IsFalse(suggestions.Any(defn => ((WritingSystemSuggestion)defn).TemplateDefinition.Variant == "fonipa"));
		}
		public void GetSuggestions_MajorWorlLanguage_SuggestsOnlyIfSuppressSuggesstionsForMajorWorldLanguagesIsFalse()
		{
			var english = new WritingSystemDefinition("en", string.Empty, string.Empty, string.Empty, "eng", false);
			var list = new List<WritingSystemDefinition>(new[] { english });
			var suggestor = new WritingSystemSuggestor();
			suggestor.SuppressSuggestionsForMajorWorldLanguages =false;
			var suggestions = suggestor.GetSuggestions(english, list);
			Assert.IsTrue(suggestions.Any(defn => ((WritingSystemSuggestion)defn).TemplateDefinition.Variant == "fonipa"));

			suggestor.SuppressSuggestionsForMajorWorldLanguages =true;
			suggestions = suggestor.GetSuggestions(english, list);
			Assert.IsFalse(suggestions.Any(defn => ((WritingSystemSuggestion)defn).TemplateDefinition.Variant == "fonipa"));
		}
		public void GetSuggestions_HasNormalLacksIpa_IpaSuggestedWhichCopiesAllRelevantFields()
		{
			var etr = new WritingSystemDefinition("etr", string.Empty, "region", "variant", "edo", true);
			etr.DefaultFontName = "font";
			etr.DefaultFontSize = 33;
			var list = new List<WritingSystemDefinition>(new[] {etr });
			var suggestor = new WritingSystemSuggestor();
			var suggestions = suggestor.GetSuggestions(etr, list);

			WritingSystemDefinition ipa = ((WritingSystemSuggestion)suggestions.First(defn => ((WritingSystemSuggestion)defn).TemplateDefinition.Script == "ipa")).TemplateDefinition;

			Assert.AreEqual("etr", ipa.Language);
			Assert.AreEqual("fonipa", ipa.Variant);
			Assert.AreEqual("Edolo", ipa.LanguageName);
			Assert.IsTrue(string.IsNullOrEmpty(ipa.NativeName));
			Assert.AreEqual("region", ipa.Region);
			//Assert.AreEqual("arial unicode ms", ipa.DefaultFontName); this depends on what fonts are installed on the test system
			Assert.AreEqual(33, ipa.DefaultFontSize);

			Assert.IsTrue(ipa.Keyboard.ToLower().Contains("ipa"));
		}
        /// <summary>
        /// Creates the presentation model object based off of a single writing system definition.
        /// This is the easiest form to use if you only want part of the UI elements or only operate on
        /// one WritingSystemDefiniion
        /// </summary>
        public WritingSystemSetupModel(WritingSystemDefinition ws)
        {
            if (ws == null)
            {
                throw new ArgumentNullException("ws");
            }
            WritingSystemSuggestor = new WritingSystemSuggestor();

            _currentWritingSystem = ws;
            _currentIndex = 0;
            _writingSystemRepository = null;
            _writingSystemDefinitions = new List<IWritingSystemDefinition>(1);
            WritingSystemDefinitions.Add(ws);
            _deletedWritingSystemDefinitions = null;
            _usingRepository = false;
        }
        /// <summary>
        /// Creates the presentation model object based off of a writing system store of some sort.
        /// </summary>
        public WritingSystemSetupModel(IWritingSystemRepository writingSystemRepository)
        {
            if (writingSystemRepository == null)
            {
                throw new ArgumentNullException("writingSystemRepository");
            }
            WritingSystemSuggestor = new WritingSystemSuggestor();

            _writingSystemRepository = writingSystemRepository;
            _writingSystemDefinitions = new List<IWritingSystemDefinition>(_writingSystemRepository.AllWritingSystems);
            _deletedWritingSystemDefinitions = new List<IWritingSystemDefinition>();
            _currentIndex = -1;
            _usingRepository = true;
        }