public void Test_Message_WhenTwoItem_ShouldReturnMessage() { //---------------Set up test pack------------------- string title = TestUtil.GetRandomString(); RecordingExceptionNotifier exceptionNotifier = new RecordingExceptionNotifier(); Exception exception = new Exception(GetRandomString()); string furtherMessage = TestUtil.GetRandomString(); exceptionNotifier.Notify(exception, furtherMessage, title); Exception exception2 = new Exception(GetRandomString()); string furtherMessage2 = TestUtil.GetRandomString(); exceptionNotifier.Notify(exception2, furtherMessage2, title); //---------------Assert Precondition---------------- Assert.AreEqual(2, exceptionNotifier.Exceptions.Count); //---------------Execute Test ---------------------- var exceptionMessage = exceptionNotifier.ExceptionMessage; //---------------Test Result ----------------------- var expectedErrorMessage = exception.Message + " - " + furtherMessage + Environment.NewLine + exception2.Message + " - " + furtherMessage2; Assert.AreEqual(expectedErrorMessage, exceptionMessage); }
public void Test_RethrowRecordedException_WhenRecordedExceptionExists_ShouldRethrowException() { //---------------Set up test pack------------------- RecordingExceptionNotifier exceptionNotifier = new RecordingExceptionNotifier(); Exception exception = new Exception(GetRandomString()); string furtherMessage = TestUtil.GetRandomString(); string title = TestUtil.GetRandomString(); exceptionNotifier.Notify(exception, furtherMessage, title); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- bool exceptionThrown = false; try { exceptionNotifier.RethrowRecordedException(); } //---------------Test Result ----------------------- catch (Exception ex) { exceptionThrown = true; StringAssert.Contains(string.Format( "An Exception that was recorded by the RecordingExceptionNotifier and has been rethrown." + "{0}Title: {1}{0}Further Message: {2}", Environment.NewLine, title, exceptionNotifier.ExceptionMessage), ex.Message); Assert.AreSame(exception, ex.InnerException); } Assert.IsTrue(exceptionThrown, "Expected to throw an Exception"); }
/// <summary> /// Loads class definitions, converting them from a /// string containing these definitions to an IList object. /// If the conversion fails, an error message will be sent to the /// console. /// </summary> /// <param name="xmlClassDefs">The string containing all the /// class definitions. If you are loading these from /// a file, you can use /// <code>new StreamReader("filename.xml").ReadToEnd()</code> /// to create a continuous string.</param> /// <returns>Returns an IList object containing the definitions</returns> public ClassDefCol LoadClassDefs(string xmlClassDefs) { XmlDocument doc = new XmlDocument(); try { doc.LoadXml(xmlClassDefs); } catch (XmlException ex) { throw new XmlException ("The class definitions XML file has no root " + "element 'classes'. The document needs a master 'classes' element " + "and individual 'class' elements for each of the classes you are " + "defining.", ex); } var origionalExceptionNotifier = GlobalRegistry.UIExceptionNotifier; try { var recordingExceptionNotifier = new RecordingExceptionNotifier(); GlobalRegistry.UIExceptionNotifier = recordingExceptionNotifier; var loadClassDefs = LoadClassDefs(doc.DocumentElement); recordingExceptionNotifier.RethrowRecordedException(); return(loadClassDefs); } finally { GlobalRegistry.UIExceptionNotifier = origionalExceptionNotifier; } }
public void Test_Construct() { //---------------Set up test pack------------------- //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- RecordingExceptionNotifier exceptionNotifier = new RecordingExceptionNotifier(); //---------------Test Result ----------------------- Assert.AreEqual(0, exceptionNotifier.Exceptions.Count); Assert.IsInstanceOf(typeof(IExceptionNotifier), exceptionNotifier); }
public void Test_HasException_WhenNotHas_ShouldRetFalse() { //---------------Set up test pack------------------- RecordingExceptionNotifier exceptionNotifier = new RecordingExceptionNotifier(); //---------------Assert Precondition---------------- Assert.AreEqual(0, exceptionNotifier.Exceptions.Count); //---------------Execute Test ---------------------- var hasExceptions = exceptionNotifier.HasExceptions; //---------------Test Result ----------------------- Assert.IsFalse(hasExceptions); }
public void Test_HasException_WhenHas_ShouldRetTrue() { //---------------Set up test pack------------------- RecordingExceptionNotifier exceptionNotifier = new RecordingExceptionNotifier(); exceptionNotifier.Notify(new Exception(), TestUtil.GetRandomString(), TestUtil.GetRandomString()); //---------------Assert Precondition---------------- Assert.AreEqual(1, exceptionNotifier.Exceptions.Count); //---------------Execute Test ---------------------- var hasExceptions = exceptionNotifier.HasExceptions; //---------------Test Result ----------------------- Assert.IsTrue(hasExceptions); }
public void Test_Message_When_NoItems_ShouldBeEmptyString() { //---------------Set up test pack------------------- // Exception exception = new Exception(); // string furtherMessage = TestUtil.GetRandomString(); // string title = TestUtil.GetRandomString(); IExceptionNotifier exceptionNotifier = new RecordingExceptionNotifier(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var exceptionMessage = exceptionNotifier.ExceptionMessage; //---------------Test Result ----------------------- Assert.IsNullOrEmpty(exceptionMessage); }
public void Test_Message_WhenOneItem_ShouldReturnMessage() { //---------------Set up test pack------------------- Exception exception = new Exception(GetRandomString()); string furtherMessage = TestUtil.GetRandomString(); string title = TestUtil.GetRandomString(); RecordingExceptionNotifier exceptionNotifier = new RecordingExceptionNotifier(); exceptionNotifier.Notify(exception, furtherMessage, title); //---------------Assert Precondition---------------- Assert.AreEqual(1, exceptionNotifier.Exceptions.Count); //---------------Execute Test ---------------------- var exceptionMessage = exceptionNotifier.ExceptionMessage; //---------------Test Result ----------------------- Assert.AreEqual(exception.Message + " - " + furtherMessage, exceptionMessage); }
public void Test_Notify_ShouldIncludeDetailsInExceptions() { //---------------Set up test pack------------------- Exception exception = new Exception(); string furtherMessage = TestUtil.GetRandomString(); string title = TestUtil.GetRandomString(); RecordingExceptionNotifier exceptionNotifier = new RecordingExceptionNotifier(); //---------------Assert Precondition---------------- Assert.AreEqual(0, exceptionNotifier.Exceptions.Count); //---------------Execute Test ---------------------- exceptionNotifier.Notify(exception, furtherMessage, title); //---------------Test Result ----------------------- Assert.AreEqual(1, exceptionNotifier.Exceptions.Count); RecordingExceptionNotifier.ExceptionDetail exceptionDetail = exceptionNotifier.Exceptions[0]; Assert.AreSame(exception, exceptionDetail.Exception); Assert.AreSame(furtherMessage, exceptionDetail.FurtherMessage); Assert.AreSame(title, exceptionDetail.Title); }
public void Test_RethrowRecordedException_WhenNoRecordedExceptionsExist_ShouldDoNothing() { //---------------Set up test pack------------------- RecordingExceptionNotifier exceptionNotifier = new RecordingExceptionNotifier(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- bool exceptionThrown = false; try { exceptionNotifier.RethrowRecordedException(); } //---------------Test Result ----------------------- catch (Exception) { exceptionThrown = true; } Assert.IsFalse(exceptionThrown, "Expected not to throw an Exception"); }
public void Test_EditDataTable_WhenMultipleLevelProp_ShouldEditRelatedBO() { //---------------Set up test pack------------------- RecordingExceptionNotifier recordingExceptionNotifier = new RecordingExceptionNotifier(); GlobalRegistry.UIExceptionNotifier = recordingExceptionNotifier; AddressTestBO.LoadDefaultClassDef(); ContactPersonTestBO.LoadClassDefWithOrganisationAndAddressRelationships(); OrganisationTestBO.LoadDefaultClassDef(); BusinessObjectCollection <AddressTestBO> addresses = new BusinessObjectCollection <AddressTestBO>(); addresses.Add(new AddressTestBO { ContactPersonTestBO = new ContactPersonTestBO() }); addresses.Add(new AddressTestBO { ContactPersonTestBO = new ContactPersonTestBO() }); addresses.Add(new AddressTestBO { ContactPersonTestBO = new ContactPersonTestBO() }); OrganisationTestBO organisation = new OrganisationTestBO(); UIGrid uiGrid = new UIGrid(); const string propertyName = "ContactPersonTestBO.OrganisationID"; uiGrid.Add(new UIGridColumn("Contact Organisation", propertyName, typeof(DataGridViewTextBoxColumn), true, 100, PropAlignment.left, new Hashtable())); IDataSetProvider dataSetProvider = CreateDataSetProvider(addresses); DataTable table = dataSetProvider.GetDataTable(uiGrid); //---------------Assert Precondition---------------- Assert.IsTrue(dataSetProvider is EditableDataSetProvider); Assert.AreEqual(3, table.Rows.Count); Assert.AreEqual(DBNull.Value, table.Rows[0][propertyName]); //---------------Execute Test ---------------------- table.Rows[0][propertyName] = organisation.OrganisationID; //---------------Test Result ----------------------- Assert.AreEqual(organisation.OrganisationID, table.Rows[0][propertyName]); Assert.AreEqual(organisation.OrganisationID, addresses[0].ContactPersonTestBO.OrganisationID); recordingExceptionNotifier.RethrowRecordedException(); }
public void Test_EditDataTable_WhenVirtualProp_ShouldEditRelatedVirtualProp() { //---------------Set up test pack------------------- RecordingExceptionNotifier recordingExceptionNotifier = new RecordingExceptionNotifier(); GlobalRegistry.UIExceptionNotifier = recordingExceptionNotifier; AddressTestBO.LoadDefaultClassDef(); var contactPersonClassDef = ContactPersonTestBO.LoadClassDefWithOrganisationAndAddressRelationships(); OrganisationTestBO.LoadDefaultClassDef(); BusinessObjectCollection <ContactPersonTestBO> contactPersonTestBOS = new BusinessObjectCollection <ContactPersonTestBO>(); contactPersonTestBOS.Add(new ContactPersonTestBO(), new ContactPersonTestBO(), new ContactPersonTestBO()); OrganisationTestBO organisation = new OrganisationTestBO(); UIGrid uiGrid = new UIGrid(); new UIDef("fdafdas", new UIForm(), uiGrid) { ClassDef = contactPersonClassDef }; const string propertyName = "-Organisation-"; uiGrid.Add(new UIGridColumn("Contact Organisation", propertyName, typeof(DataGridViewTextBoxColumn), true, 100, PropAlignment.left, new Hashtable())); IDataSetProvider dataSetProvider = CreateDataSetProvider(contactPersonTestBOS); DataTable table = dataSetProvider.GetDataTable(uiGrid); //---------------Assert Precondition---------------- Assert.IsTrue(dataSetProvider is EditableDataSetProvider); Assert.AreEqual(3, table.Rows.Count); Assert.AreEqual(DBNull.Value, table.Rows[0][propertyName]); Assert.AreEqual(null, contactPersonTestBOS[0].Organisation); //---------------Execute Test ---------------------- table.Rows[0][propertyName] = organisation; //---------------Test Result ----------------------- Assert.AreSame(organisation, table.Rows[0][propertyName]); Assert.AreSame(organisation, contactPersonTestBOS[0].Organisation); recordingExceptionNotifier.RethrowRecordedException(); }
public void Test_CustomButtonEventHandler_WhenExceptionThrown_ShouldBeCaughtByUIExceptionNotifier() { //---------------Set up test pack------------------- IButtonGroupControl buttons = CreateButtonGroupControl(); RecordingExceptionNotifier recordingExceptionNotifier = new RecordingExceptionNotifier(); GlobalRegistry.UIExceptionNotifier = recordingExceptionNotifier; bool clickEventFired = false; Exception exception = new Exception(); IButton btn = buttons.AddButton("Test", delegate { clickEventFired = true; throw exception; }); //---------------Execute Test ---------------------- btn.PerformClick(); //---------------Test Result ----------------------- Assert.IsTrue(clickEventFired, "The click event should have fired"); Assert.AreEqual(1, recordingExceptionNotifier.Exceptions.Count); Assert.AreSame(exception, recordingExceptionNotifier.Exceptions[0].Exception); Assert.AreSame("Error performing action", recordingExceptionNotifier.Exceptions[0].FurtherMessage); Assert.AreSame("Error", recordingExceptionNotifier.Exceptions[0].Title); }