public static void IsTrue(bool condition, string format, params object[] args) { if (!condition) { Thrower.Throw(format, args); } }
public void DumpTest() { var folder = Executable.Relative("Exceptions"); var folderInfo = new DirectoryInfo(folder); if (Directory.Exists(folder)) { Directory.Delete(folder, true); } //returns true sometimes when opened on Explorer while (Directory.Exists(folder)) { Thread.Yield(); } Assert.IsFalse(Directory.Exists(folder)); Thrower.Dump(new Exception("Exception at DumpTest!", new Exception("Inner"))); Assert.IsTrue(Directory.Exists(folder)); var files = Directory.GetFiles(folder); Assert.AreEqual(1, files.Length); var file = Path.GetFileName(files[0]); Assert.IsTrue(file.StartsWith("exception-")); Assert.IsTrue(file.EndsWith(".txt")); var regex = new Regex(@"exception-\d{8}_\d{6}_\d{3}\.txt"); Assert.IsTrue(regex.IsMatch(file)); var lines = File.ReadAllLines(files[0]); Assert.IsTrue(lines.Length > 0); Assert.AreEqual("System.Exception: Exception at DumpTest! ---> System.Exception: Inner", lines[0]); }
public void MakeTest() { var inner = Thrower.Make("Inner {0}", true); var outer = Thrower.Make(inner, "Outer {0}", false); Assert.AreEqual("Inner True", inner.Message); Assert.AreEqual("Outer False", outer.Message); Assert.NotNull(outer.InnerException); Assert.AreEqual("Inner True", outer.InnerException.Message); }
public void ThrowTest() { var exceptions = new List <Exception>(); try { Thrower.Throw("Inner {0}", true); } catch (Exception ex) { exceptions.Add(ex); } try { Thrower.Throw(new Exception("Inner"), "Outer {0}", true); } catch (Exception ex) { exceptions.Add(ex); } Assert.AreEqual(2, exceptions.Count); Assert.AreEqual("Inner True", exceptions[0].Message); Assert.AreEqual("Outer True", exceptions[1].Message); Assert.NotNull(exceptions[1].InnerException); Assert.AreEqual("Inner", exceptions[1].InnerException.Message); }
public static TcpClient ConnectWithTimeout(string ip, int port, int timeout) { var client = new TcpClient(); var result = client.BeginConnect(ip, port, null, null); if (!result.AsyncWaitHandle.WaitOne(timeout, true)) { Disposer.Dispose(client); Thrower.Throw("Timeout connecting to {0}:{1}", ip, port); } client.EndConnect(result); return(client); }
public void Log(Log log) { formatter.Format(log); runner.Run(() => { foreach (var appender in appenders) { Catcher.Try(() => appender(log), (ex) => { removes.Add(appender); Thrower.Dump(ex); }); } //autoremove excepting appenders foreach (var appender in removes) { appenders.Remove(appender); } removes.Clear(); }); }