public void DeleteCurrent_NoLongerInList()
 {
     using (var e = new DeleteCurrentTestEnvironment())
     {
         _model.AddNew();
         _model.CurrentISO = "pt";
         _model.AddNew();
         _model.CurrentISO = "de";
         _model.AddNew();
         _model.CurrentISO = "th";
         var writingSystems = new List <string>();
         for (_model.CurrentIndex = _model.WritingSystemCount - 1;
              _model.HasCurrentSelection;
              _model.CurrentIndex--)
         {
             writingSystems.Insert(0, _model.CurrentISO);
         }
         string deletedWritingSystem = writingSystems[1];
         _model.CurrentIndex = 1;
         _model.DeleteCurrent();
         for (_model.CurrentIndex = _model.WritingSystemCount - 1;
              _model.HasCurrentSelection;
              _model.CurrentIndex--)
         {
             Assert.AreNotEqual(deletedWritingSystem, _model.CurrentISO);
         }
     }
 }
 public void DeleteCurrent_DataInProjectAndNoOneListeningToUserChoiceEvent_OkToDeleteIsFired()
 {
     using (var e = new DeleteCurrentTestEnvironment())
     {
         _model.AskIfOkToDeleteWritingSystems += e.OnAskIfOkToDeleteWritingSystem_Yes;                 //just need a listener to verifiy that it did fire
         _model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
         _model.DeleteCurrent();
         Assert.That(e.AskIfOkToDeleteWritingSystemFired, Is.True);
     }
 }
 public void DeleteCurrent_DataInProject_AskUserWhatToDoWithDataInWritingSystemToBeDeletedFires()
 {
     using (var e = new DeleteCurrentTestEnvironment())
     {
         _model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
             e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Nothing;
         _model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
         _model.DeleteCurrent();
         Assert.That(e.AskUserWhatToDoWithDataInWritingSystemToBeDeletedFired, Is.True);
     }
 }
 public void DeleteCurrent_NoDataInProjectAndNotAllowedToDelete_ThrowsUserException()
 {
     using (var e = new DeleteCurrentTestEnvironment())
     {
         _model.AskIfOkToDeleteWritingSystems += e.OnAskIfOkToDeleteWritingSystem_No;
         _model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
         Assert.Throws <ErrorReport.ProblemNotificationSentToUserException>(
             () => _model.DeleteCurrent()
             );
     }
 }
 public void DeleteCurrent_DataInProjectAndUserChoosesToDeleteAndNoOneListeningToCanDelete_Deletes()
 {
     using (var e = new DeleteCurrentTestEnvironment())
     {
         _model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
             e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Delete;
         _model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
         Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.LanguageTag == "pt"), Is.True);
         _model.DeleteCurrent();
         Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.LanguageTag == "pt"), Is.False);
     }
 }
 public void DeleteCurrent_DataInProjectAndUserCancels_NothingHappens()
 {
     using (var e = new DeleteCurrentTestEnvironment())
     {
         _model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
             e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Nothing;
         _model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
         Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.LanguageTag == "pt"), Is.True);
         _model.DeleteCurrent();
         Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.LanguageTag == "pt"), Is.True);
     }
 }
 public void DeleteCurrent_DataInProjectAndUserChoosesToDelete_OkToDeleteFired()
 {
     using (var e = new DeleteCurrentTestEnvironment())
     {
         _model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
             e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Delete;
         _model.AskIfOkToDeleteWritingSystems += e.OnAskIfOkToDeleteWritingSystem_Yes;                 //just need a listener to verifiy that it did fire
         _model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
         _model.DeleteCurrent();
         Assert.That(e.AskIfOkToDeleteWritingSystemFired, Is.True);
     }
 }
 public void DeleteCurrent_NoDataInProjectAndAllowedToDelete_WritingSystemIsDeleted()
 {
     using (var e = new DeleteCurrentTestEnvironment())
     {
         _model.AskIfOkToDeleteWritingSystems += e.OnAskIfOkToDeleteWritingSystem_Yes;
         _model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
         _model.Save();
         Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.LanguageTag == "pt"), Is.True);
         _model.DeleteCurrent();
         Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.LanguageTag == "pt"), Is.False);
     }
 }
 public void Event_Delete_TriggersOnAddDelete()
 {
     using (var e = new DeleteCurrentTestEnvironment())
     {
         _model.AddNew();
         _model.CurrentISO = "pt";
         bool eventTriggered = false;
         _model.ItemAddedOrDeleted += delegate { eventTriggered = true; };
         _model.DeleteCurrent();
         Assert.IsTrue(eventTriggered);
     }
 }
 public void DeleteCurrent_DataInProjectAndUserChoosesToConflateAndCanConflate_Deleted()
 {
     using (var e = new DeleteCurrentTestEnvironment())
     {
         _model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
             e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Conflate;
         _model.AskIfOkToConflateWritingSystems += e.OnAskIfOkToConflateWritingSystems_Yes;
         _model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
         Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.Id == "pt"), Is.True);
         _model.DeleteCurrent();
         Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.Id == "pt"), Is.False);
     }
 }
        public void DeleteCurrent_DataInProjectAndUserChoosesToConflateButCannotConflate_ThrowsUserException()
        {
            using (var e = new DeleteCurrentTestEnvironment())
            {
                _model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
                    e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Conflate;
                _model.AskIfOkToConflateWritingSystems += e.OnAskIfOkToConflateWritingSystems_No;
                _model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));

                Assert.Throws <ErrorReport.ProblemNotificationSentToUserException>(
                    () => _model.DeleteCurrent()
                    );
            }
        }
		public void DeleteCurrent_NoDataInProjectAndAllowedToDelete_WritingSystemIsDeleted()
		{
			using (var e = new DeleteCurrentTestEnvironment())
			{
				_model.AskIfOkToDeleteWritingSystems += e.OnAskIfOkToDeleteWritingSystem_Yes;
				_model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
				_model.Save();
				Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.Id == "pt"), Is.True);
				_model.DeleteCurrent();
				Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.Id == "pt"), Is.False);
			}
		}
		public void DeleteCurrent_DataInProjectAndUserCancels_NothingHappens()
		{
			using (var e = new DeleteCurrentTestEnvironment())
			{
				_model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
					e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Nothing;
				_model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
				Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.Id == "pt"), Is.True);
				_model.DeleteCurrent();
				Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.Id == "pt"), Is.True);
			}
		}
		public void DeleteCurrent_DataInProjectAndUserChoosesToConflateAndNoOneListeningToCanConflate_Deletes()
		{
			using (var e = new DeleteCurrentTestEnvironment())
			{
				_model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
					e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Conflate;
				_model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
				Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.LanguageTag == "pt"), Is.True);
				_model.DeleteCurrent();
				Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.LanguageTag == "pt"), Is.False);
			}
		}
		public void DeleteCurrent_DataInProject_AskUserWhatToDoWithDataInWritingSystemToBeDeletedFires()
		{
			using (var e = new DeleteCurrentTestEnvironment())
			{
				_model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
					e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Nothing;
				_model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
				_model.DeleteCurrent();
				Assert.That(e.AskUserWhatToDoWithDataInWritingSystemToBeDeletedFired, Is.True);
			}
		}
		public void DeleteCurrent_DataInProjectAndNoOneListeningToUserChoiceEvent_OkToDeleteIsFired()
		{
			using (var e = new DeleteCurrentTestEnvironment())
			{
				_model.AskIfOkToDeleteWritingSystems += e.OnAskIfOkToDeleteWritingSystem_Yes; //just need a listener to verifiy that it did fire
				_model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
				_model.DeleteCurrent();
				Assert.That(e.AskIfOkToDeleteWritingSystemFired, Is.True);
			}
		}
		public void DeleteCurrent_DataInProjectAndUserChoosesToDelete_OkToDeleteFired()
		{
			using (var e = new DeleteCurrentTestEnvironment())
			{
				_model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
					e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Delete;
				_model.AskIfOkToDeleteWritingSystems += e.OnAskIfOkToDeleteWritingSystem_Yes; //just need a listener to verifiy that it did fire
				_model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
				_model.DeleteCurrent();
				Assert.That(e.AskIfOkToDeleteWritingSystemFired, Is.True);
			}
		}
		public void DeleteCurrent_NoLongerInList()
		{
			using (var e = new DeleteCurrentTestEnvironment())
			{
				_model.AddNew();
				_model.CurrentISO = "pt";
				_model.AddNew();
				_model.CurrentISO = "de";
				_model.AddNew();
				_model.CurrentISO = "th";
				var writingSystems = new List<string>();
				for (_model.CurrentIndex = _model.WritingSystemCount - 1;
					 _model.HasCurrentSelection;
					 _model.CurrentIndex--)
				{
					writingSystems.Insert(0, _model.CurrentISO);
				}
				string deletedWritingSystem = writingSystems[1];
				_model.CurrentIndex = 1;
				_model.DeleteCurrent();
				for (_model.CurrentIndex = _model.WritingSystemCount - 1;
					 _model.HasCurrentSelection;
					 _model.CurrentIndex--)
				{
					Assert.AreNotEqual(deletedWritingSystem, _model.CurrentISO);
				}
			}
		}
		public void Event_Delete_TriggersOnAddDelete()
		{
			using (var e = new DeleteCurrentTestEnvironment())
			{
				_model.AddNew();
				_model.CurrentISO = "pt";
				bool eventTriggered = false;
				_model.ItemAddedOrDeleted += delegate { eventTriggered = true; };
				_model.DeleteCurrent();
				Assert.IsTrue(eventTriggered);
			}
		}
		public void DeleteCurrent_DataInProjectAndUserChoosesToDeleteAndCanDelete_Deletes()
		{
			using (var e = new DeleteCurrentTestEnvironment())
			{
				_model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
					e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Delete;
				_model.AskIfOkToDeleteWritingSystems += e.OnAskIfOkToDeleteWritingSystem_Yes;
				_model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));
				Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.Id == "pt"), Is.True);
				_model.DeleteCurrent();
				Assert.That(_model.WritingSystemDefinitions.Any(ws => ws.Id == "pt"), Is.False);
			}
		}
		public void DeleteCurrent_DataInProjectAndUserChoosesToDeleteButNotAllowedToDelete_ThrowsUserException()
		{
			using (var e = new DeleteCurrentTestEnvironment())
			{
				_model.AskUserWhatToDoWithDataInWritingSystemToBeDeleted +=
					e.OnAskUserWhatToDoWithDataInWritingSystemToBeDeleted_Delete;
				_model.AskIfOkToDeleteWritingSystems += e.OnAskIfOkToDeleteWritingSystem_No;
				_model.AddPredefinedDefinition(new WritingSystemDefinition("pt"));

				Assert.Throws<ErrorReport.ProblemNotificationSentToUserException>(
					() => _model.DeleteCurrent()
					);
			}
		}