/// <summary> Extension to actions on specified element with log functionality. </summary> /// <param name="root">current element.</param> /// <param name="Log">VerifiableLog instance</param> /// <param name="action">delegate to actions to be performed on current element</param> public static void ValidOperation(this OpenXmlElement root, LogUtil.VerifiableLog Log, ValidAction action) { Log.Comment("Executing specified actions on current element..."); action(root); Log.Comment("Executed specified actions on current element."); Log.Comment("Saving changes..."); root.PartRootElement().Save(); Log.Comment("Saved changes successfully."); Log.Pass("Specified actions executed without any exceptions."); }
/// <summary> Extension to invalid actions on specified element with log functionality.</summary> /// <typeparam name="ExpectedException">Expected exception that is supposed to throw on specified action</typeparam> /// <param name="root">current element</param> /// <param name="Log">VerifiableLog instance</param> /// <param name="exAction">delegate to invalid actions to be performed on current element</param> public static void InvalidOperation <ExpectedException>(this OpenXmlElement root, LogUtil.VerifiableLog Log, InvalidAction exAction) where ExpectedException : Exception { try { Log.Comment("Executing specified actions on current element..."); exAction(root); Log.Comment("Executed specified actions on current element."); Log.Comment("Saving changes..."); root.PartRootElement().Save(); Log.Comment("Saved changes successfully."); Log.Fail("No {0} happened as expected.", typeof(ExpectedException).Name); } catch (ExpectedException e) { Log.Pass("Expected {0} caught.", e.GetType().Name); Log.Comment(e.ToString()); } }