コード例 #1
0
        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);
        }
コード例 #2
0
        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");
        }
コード例 #3
0
        /// <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;
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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");
        }
コード例 #11
0
        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();
        }
コード例 #12
0
        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();
        }
コード例 #13
0
        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);
        }