// // DiagnosticsConfigurationHandlerTest.cs: // NUnit Test Cases for System.Diagnostics.DiagnosticsConfigurationHandler // // Jonathan Pryor (jonpryor@vt.edu) // // (C) Jonathan Pryor // using NUnit.Framework; using System; using System.Configuration; using System.Diagnostics; using System.Xml; namespace MonoTests.System.Diagnostics { public class DiagnosticsConfigurationHandlerTest : TestCase { private const string XmlFormat = "{0}"; /* "" + "{0}" + ""; */ private DiagnosticsConfigurationHandler handler = new DiagnosticsConfigurationHandler (); public DiagnosticsConfigurationHandlerTest () : base ("System.Diagnostics.DiagnosticsConfigurationHandler testsuite") { } public DiagnosticsConfigurationHandlerTest (string name) : base(name) { } protected override void SetUp () { } protected override void TearDown () { } public static ITest Suite { get { return new TestSuite (typeof (DiagnosticsConfigurationHandlerTest)); } } public void TestSwitchesTag_Attributes () { string[] attrs = {"invalid=\"yes\""}; ValidateExceptions ("#TST:A", "", attrs); } private void ValidateExceptions (string name, string format, string[] args) { foreach (string arg in args) { string xml = string.Format (XmlFormat, string.Format (format, arg)); try { CreateHandler (xml); Fail (string.Format ("{0}:{1}: no exception generated", name, arg)); } catch (ConfigurationException ce) { } catch (AssertionFailedError afe) { // This is generated by the Fail() statement in the try block. throw; } catch (Exception e) { Fail (string.Format ("{0}:{1}: wrong exception generated: {2} ({3}).", // name, arg, e.Message, name, arg, e.ToString(), // e.InnerException == null ? "" : e.InnerException.Message)); e.InnerException == null ? "" : e.InnerException.ToString())); } } } private void ValidateSuccess (string name, string format, string[] args) { foreach (string arg in args) { string xml = string.Format (XmlFormat, string.Format (format, arg)); try { CreateHandler (xml); } catch (Exception e) { Fail (string.Format ("{0}:{1}: exception generated: {2} ({3}).", // name, arg, e.Message, name, arg, e.ToString(), // e.InnerException == null ? "" : e.InnerException.Message)); e.InnerException == null ? "" : e.InnerException.ToString())); } } } private object CreateHandler (string xml) { XmlDocument d = new XmlDocument (); d.LoadXml (xml); return handler.Create (null, null, d); } public void TestSwitchesTag_Elements () { string[] badElements = { // not enough arguments "", "", // too many arguments "", // wrong casing "", "", // missing args "", "", // too many args "", "", // invalid element "" }; ValidateExceptions ("#TST:IE:Bad", "{0}", badElements); string[] goodElements = { "", "", "", "" }; ValidateSuccess ("#TST:IE:Good", "{0}", goodElements); } public void TestAssertTag () { string[] goodAttributes = { "", "assertuienabled=\"true\"", "assertuienabled=\"false\" logfilename=\"some file name\"", "logfilename=\"some file name\"" }; ValidateSuccess ("#TAT:Good", "", goodAttributes); string[] badAttributes = { "AssertUiEnabled=\"true\"", "LogFileName=\"foo\"", "assertuienabled=\"\"", "assertuienabled=\"non-boolean-value\"" }; ValidateExceptions ("#TAT:BadAttrs", "", badAttributes); string[] badChildren = { "" }; ValidateExceptions ("#TAT:BadChildren", "{0}", badChildren); } public void TestTraceTag_Attributes () { string[] good = { "", "autoflush=\"true\"", "indentsize=\"4\"", "autoflush=\"false\" indentsize=\"10\"" }; ValidateSuccess ("#TTT:A:Good", "", good); string[] bad = { "AutoFlush=\"true\"", "IndentSize=\"false\"", "autoflush=\"non-boolean-value\"", "autoflush=\"\"", "indentsize=\"non-integral-value\"", "indentsize=\"\"", "extra=\"invalid\"" }; ValidateExceptions ("#TTT:A:Bad", "", bad); } public void TestTraceTag_Children () { string[] good = { // more about listeners in a different function... "" }; ValidateSuccess ("#TTT:C:Good", "{0}", good); string[] bad = { "", "" }; ValidateExceptions ("#TTT:C:Bad", "{0}", bad); } public void TestTraceTag_Listeners () { const string format = "{0}"; string[] good = { "", "", "", "", "" }; ValidateSuccess ("#TTT:L:Good", format, good); string[] bad = { "", "", "", "", "", "", "", "", }; ValidateExceptions ("#TTT:L:Bad", format, bad); } } }